您的位置:首页 > 其它

VS2013无法进入断点进行调试

2015-10-24 21:23 435 查看
以前也遇到过同样的问题,但没有问个为什么,也没有探个毕竟。昨天调试一个DLL,添加输出信息吧,太麻烦而且不轻易定位,

但设置断点后按“F5”,断点不可用,气泡提示“当前不会命中断点,还没有为该文档加载任何符号。

”再右键->“位置”->“答应源代码与原始版本不同”,还是不行。77777我还不信了,整它!

后来才发现,“Alt+F7”->“配置属性”->“调试”->“命令”中输入的 exe 路径下,已经提供了此 DLL,

压根就没有调用咱 F5 启动的DLL。。。。。。把 exe (以及相关的其它文件,假如有)拷贝到 DLL 目录下,就可以调试了。

犯了个低级错误。但也总结了一下不能调试的各种可能原因:

1.解决方案配置是 Debug ,但没有在工程属性页中“Alt+F7”->“配置属性”->“C/C++”->“常规”->“调试信息格式”,

选择“用于“编辑并继承”的程序数据库(/ZI)”。另外,在“配置属性”->“链接器”->“调试”->“生成调试信息”中,选择“是”。

【 2 】

vs2005奇怪的断点无效问题

最近一工程中,在调试的时候,有些cpp文件都可以设置断点并且跟进去,但是有一个cpp文件总是不能设置断点,

提示“当前不会命中断点。源代码与原始版本不同。” 重新更换过n次文件都不起作用,然后在goole搜索此类类似问题,

找到下篇文章,

然后我把那个cpp文件用记事本打开,另存为unicode格式,再重新编译,最后问题解决!

也可以更改vs2005的设置,选项->常规,将要求源文件与原始版本完全匹配的勾取消就可以了!

清理整个解决方案,重新编译,无效。删除整个目录,从SubVersion服务器上Down下来重新来过,一样无效。上网搜索,未果。

【3】

经常被vs2005的一些选项设置搞惨,这玩意儿太莫名其妙了.

就像上次的那个warning一样,解决办法居然是使用/n替换/n.

VS2005断点失效(断点不可用)解决方案在网上搜罗了一下,如下:

1、无效断点所在的项目和启动项目的设置:项目->属性->配置属性->C/C++->常规->调试信息格式,这里不能为『禁用』;

2、项目->属性->配置属性->链接器->调试->生成调试信息,这里设为『是』;

3、C/C++->优化->优化选择『禁用』;

4、删除解决方案下的.ncb文件;

5、工具->选项->调试->『要求源文件与原始版本完成匹配』去掉勾;

6、最后在上述设置的情况下,重新编译整个解决方案;

不过我的情况是debug模式下,1,2,3,4,6都试过了断点还是不可用,最后试试5居然就行了.真恶心!

7.如果断点仍然无效,那么请格式化代码.很可能是代码含有不可见字符或代码单行过长等原因造成.

解决方法3:重新生成解决方案或者先清理解决方案再生成解决方案






这时再运行,断点也可以正常进入。

那么为什么会造成这种情况呢?这时因为调试时使用的是PDB(Program Database)文件,而当我们在类库中修改代码后,由于没有重新编译,会使用上次的PDB文件,这样就造成了原来的PDB和新的代码文件不匹配,自然调试时也就无法正确进入断点。

再有前面提到,有时断点会跳到其他的位置,是因为断点是定位在代码的行上的,而PDB文件中记录了代码的行数,但是PDB文件却没有更新,所以当我们强行将断点处的代码设置"允许源代码与原始版本不同"时,如果依旧使用上一次的PDB文件,自然断点的行数就定位到了上次记录的代码行数,所以断点就会往后跳了。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: