VS 调试时 断点失效的原因
来源:互联网 发布:七上生物行知天下答案 编辑:程序博客网 时间:2024/05/28 04:55
在使用VS调试时,会遇到断点失效的情况,特别是当添加了其他的工程时修改了其文件时,在该文件加断点调试时发生了失效的情况。
原因可能是:
1. 修改了该文件,在调试之前,没有编译修改文件所在的文件,其他工程调用该工程生成的旧的库文件,导致与新修改的源文件不一致导致。解决方法:编译修改文件所在的工程(生成.dll或者.lib)。
2. VS设置的问题。解决:Tools->Option->debugging->General 找到 Require source files to exactly match the original version 不要打勾(工具->选项->调试里->常规 找到 要求原文件与原始版本完全匹配 不要打勾)。
修改当初的理解(2015.4.23):
根本的原因是,在调试时,需要使用PDB文件(与源文件编译成的二进制文件具有相同的唯一标识GUID),而新修改的源文件编译成二进制文件与原来的PDB文件不一致,引起“源代码与原始版本不同”。关于PDB文件参考http://www.cnblogs.com/itech/archive/2011/08/15/2136522.html。
但是为什么新修改的源文件没有与之对应的新的PDB文件?因为没(有)能重新编译生成。所以解决方法是:
1. 重新生成整个项目的解决方案:菜单“生成”->"重新解决方案"。到这里一般就可以解决这个断点失效或者“源代码与原始版本不同”问题,但是有时就是不行。什么原因?可能是源文件引入了一些莫名其妙的字符导致无法重新生成。解决方法:对源文件进行格式化,ctrl+a全选,ctrl+k, ctrl+f 格式化。
2. 在 工具->选项->调试里->常规 找到 要求原文件与原始版本完全匹配 不建议去掉勾,因为这样可能引起当前源文件与PDB不匹配,但仍能调试,但是调试的是按旧的PDB信息来调试新的源文件,这样调试显然有问题。
- VS 调试时 断点失效的原因
- VS调试时断点无法进入或命中的原因及解决方法(PDB引发的)
- VS调试时断点无法进入或命中的原因及解决方法(PDB引发的)
- VS断点失效时候的处理
- vs断点失效
- VS调试时断点错位
- vs调试部分断点进不去的问题
- vs release版本的断点调试
- vs 无法断点调试的解决办法
- 调试断点进不去原因
- vs 2005断点调试
- VS断点调试
- vs 断点调试
- VS断点调试技巧
- VS断点调试
- VS 调试断点命中
- 解决 VS 2008 2010 2012 断点 失效 以及 变量 调试 无法 查看
- VS 进行调试时,打不开*.exe 可能的原因
- 最近使用Git,找些资料
- 框架
- 彻底禁止查看网页源代码
- C语言返回多个值
- 调用方式 __cdecl _stdcall _fastcall _thiscall
- VS 调试时 断点失效的原因
- C++ 使用句柄
- Sicily 5295. Universal Oracle
- 比CMD更强大的命令行WMIC
- Sicily 4874. POGODAK
- LeetCode_4Sum
- 八进制数的表达方法!八进制数在转义符中的使用!
- Sicily 4839. 铺地毯
- eclipse不显示代码提示的解决方案