不能设置断点的检查步骤
不能设置断点的检查步骤
在调试程序的时候,有的时候你会发现设置的断点不起作用,而且更糟糕的是,一般碰到这种情况的时候都是非常紧急或者是加班到夜已深、人寂静的时候了。正是应了那句玩笑话:“机器机器,越急越气!”。一般发生断点不起作用的话:
1. 你首先要判断的是断点是否真的设置上了?
a) 如果在Visual Studio里面,你的断点符号是一个实心圆,那么断点的确是设置上了,你要判断的是设置断点的语句是否真的被执行到了,这种情况的解决方案不在本文讨论当中。
b) 如果在Visual Studio里面,你的断点符号是一个空心圆,那么说明断点被你禁用了,那么启用就行了。
c) 如果在Visual Studio里面,你的断点符号是一个空心圆并且还带了一个小感叹号的话,如下图所示:
那么说明你的调试符号文件没有被正确加载,参看我这篇文档了解什么是符号文件:http://blog.csdn.net/Donjuan/archive/2008/12/05/3454597.aspx
2. 如果确定是符号文件没有加载正确,单击“调试”-- >“窗口”-- >“模块”列出程序加载的所有DLL文件,模块窗口还会列出每一个DLL文件的符号文件加载信息:
3. 由于我们设置的断点的源文件是TestWPF.exe源代码的一部分,从第二列里面可以看出Visual Studio没有找到TestWPF.exe的PDB文件,为了查看Visual Studio尝试在哪些路经加载我们的符号文件,可以右键单击TestWPF.exe那一行,在弹出菜单里面选择“符号文件加载信息”,打开的窗口里面详细显示了为什么Visual studio没有成功加载TestWPF.exe的PDB文件,这是一个输出的例子:
E:/Workspace/Study/Forum/Test/TestWPF/bin/Debug/TestWPF.pdb: Cannot find or open the PDB file. E:/Workspace/Study/Forum/Test/TestWPF/obj/Debug/TestWPF.pdb: Cannot find or open the PDB file. C:/WINDOWS/symbols/exe/TestWPF.pdb: Cannot find or open the PDB file. C:/WINDOWS/exe/TestWPF.pdb: Cannot find or open the PDB file. C:/WINDOWS/TestWPF.pdb: Cannot find or open the PDB file. |
4. 如果你有PDB文件,只要在右键菜单里面选择“加载符号文件”选项在打开的对话框里面输入符号文件的路径就可以了。如果你选择了符号文件,Visual studio还是报错说符号文件不能加载的话,那么请确认符号文件是否和调试的模块相匹配,因为不匹配的话,调试器就没有办法正确设置断点,没有正确显示变量的值。
a) 判断符号文件与模块是否匹配最简便的方法就是察看两者的创建时间是否相同,如果不同的话,那就肯定是不匹配的。
b) 如果时间相同,那有可能是因为模块文件是调试(Debug)版本,而符号文件是发布(Release)版本,这个时候,你可以用windbg自带的symchk程序来检查一下。命令的语法是:
Symchk.exe <模块的完整路径> /s <符号文件所在的文件夹>
下面两个图片分别是符号文件不匹配和匹配的输出示例:
符号文件和模块不匹配
符号文件和模块匹配的情形
c) 或者你有源代码的话,那就干脆重新编译一次就完了—这是最简单的方法。
5. 如果在“模块”窗口里面显示的是“跳过加载符号文件”,那么说明Visual studio默认认为这个模块的源代码不是程序的一部分,比如是程序引用到的一些.NET Framework的Assembly文件,因此它认为你不必要给这个模块排错。但是有的时候你需要看看堆栈信息或者需要单步跟踪进.NET Framwork的函数里面看看为什么调用会出错,因此你可以通过单击VS菜单里面的“工具”-- >“选项”-- >“调试”-- >“通用(General)”,勾掉“只调试我的代码”复选框,点击确定就可以了:
不能设置断点的检查步骤相关推荐
- C++:在VS中release版本下设置断点调试,详细步骤
Visual studio 中在Release版本下设置断点调试的步骤如下: 1.右键项目点击属性->c/c+±>常规->在调试信息格式中 选择 /Zi 2.右键项目点击属性-> ...
- python设置断点_python调试 设置断点
原博文 2013-12-09 11:29 − 1在所需要调试的地方加入如下代码: import pdb pdb.set_trace() 2调试代码常用命令: 实例请见参考文献: 1http://www ...
- 7000更换控制器电源步骤_恒温恒湿试验箱几大故障的检查步骤及解决方法说明...
恒温恒湿试验箱几大故障的检查步骤及解决方法说明分别如下,供参考了解. 一.当温湿度控制器显示压缩机异常的状况: 检查步骤: 四周是否为密闭空间. 请检查设备摆放的位置,是否有距离墙壁30公分以上的位置 ...
- 通过 Visual Studio 对 SQL Server 中的存储过程设置断点并进入存储过程对其进行调试...
通过 Visual Studio 的 Professional 和 Team System 版本,我们可以对 SQL Server 中的存储过程设置断点并进入存储过程对其进行调试,这样我们可以象调试应 ...
- stm32仿真不能设置断点_使用LiteOS Studio图形化查看LiteOS在STM32上运行的奥秘
摘要:本文带来基于LiteOS一站式开发工具LiteOS Studio,通过单步调试,来动态分析LiteOS的启动流程. 编者按:在LiteOS大揭秘系列,我们和读者们分享了<LiteOS是怎么 ...
- 荣耀V20设置国科大邮箱步骤
荣耀V20设置国科大邮箱步骤: 1.在手机主页点击"电子邮件"程序: 2.点击"其它"进入设置电子邮件页面,在"设置电子邮件"页面中,填写电 ...
- gdb设置断点出现Cannot access memory at address的错误
文章目录 1.0 问题描述 1.1 问题复现 2.0 2.1 静态链接库 2.2 动态链接库 2.3 PIC 1.0 问题描述 今天在给一个可执行c程序的entry point address设置断点 ...
- Fiddler基础教程 - 3. 抓包 | 设置断点 | 捕获设置 | 重定向AutoResponder | 过滤Filters
本来想自己写的,结果翻到一系列的博客,发现有前辈总结的太好了,转载过来,当知识点查询一下.外加自己总结的一些经验,我总结的放在了最后面. 原地址:https://www.cnblogs.com/sjl ...
- MySQL --- 19♪ 进阶15 TCL事务控制语言--建立结束事务/设置断点--默认隔离级别--脏读/幻读/不可重复读
#TCL事物控制语言 : /* Transaction control language : 事物控制语言 事务: 一个或者一组sql语句组成一个执行单元,这个执行单元要么全部执行,要 ...
最新文章
- ubuntu 各版本的区别
- php 查看当前字符编码,PHP检测当前字符编码并转码
- 简易的素描图片转换流程与实现
- 数学C语言编程,数学规划 (最速下降法,c语言编程).doc
- android usb存储固定,如何在Android 10中设置默认USB行为
- [SAP ABAP开发技术总结]OLE
- 网络掩码和子网掩码区别?
- ansible 建 kubernetes 证书签名请求_Java中的微信支付(2):API V3 微信平台证书的获取与刷新...
- python input函数详解_Python如何使用input函数获取输入,看完你就会了
- 回网友:不用PPT怎么做咨询顾问?
- (转)H.264 RTP payload 格式
- 论文笔记:TABERT: Pretraining for Joint Understanding of Textual and Tabular Data
- 通过子网掩码和ip地址计算网络地址和广播地址
- 代写品牌故事-品牌故事如何写才感人
- 如何c51和mdk共存兼容_解决KeilMDK和KeilC51的兼容性——如何只用一个keil软件既可编译51核又可编译ARM核...
- 南阳oj入门题-cigarettes
- 最近在关注浏览器,先转一篇游戏浏览器的评测。
- 2021年的学习Flag:只争朝夕,不负韶华
- 钉钉打新债自动提醒-python
- 地理信息三维可视化技术在城市规划中的应用
热门文章
- 计算机2级ppt儿童孤独症,2016年3月全国计算机等级考试二级MS office高级应用考试真题解析...
- 金山毒霸极速版用着不错
- 简单Thinkphp5.1如何使用Topsdk\Topapi
- 云计算机房建设方案,服务器机房建设方案
- 深入理解主成分分析(PCA)
- day14_雷神_前端02
- 山外山科创板上市破发:首日下挫19% 公司市值38亿
- python实现linux命令输出两列_Python实现Linux命令xxd -i功能
- 放羊的和砍柴的故事的N种结局
- matlab fir系数,Matlab 生成fir滤波器抽头系数