解决:当前不会命中断点。源代码与原始版本不同

解决:当前不会命中断点。源代码与原始版本不同

目录


一、目的

1、问题:想解决:当前不会命中断点。源代码与原始版本不同

www.zeeklog.com  - 解决:当前不会命中断点。源代码与原始版本不同

二、参考

1、当前不会命中断点,源代码与原始版本不同,解决办法

原文:
提示:当前不会命中断点。源代码与原始版本不同.
为什么会出现呢?
原因当前大家都清楚,就是因为编译器生成的符号文件与源代码不同.
那我的代码明明已经改变并存档,并且编译了,为什么还是不同呢?
1.我想也许是没有被真正的重新生成吧,
这好办,清理解决方案,清理工程,为了更彻底,再关闭解决方案,把debug删掉,ncb文件删掉,再打开重新生成.有时候这样问题就解决了,但是我发现问题依旧,还得再想办法..
2.我又想,我的解决方案中有是不是有几个工程呢?
如果有几个工程,在其它工程中代码改变了却没有重新生成,如果这个时候下断,当前调用的模块(dll,exe)等就会出现与代码不一致了.但是我一看才知道记错了,我这个解决方案里只有一个工程的,也没有调用其它模块,就只有一个对话框而以…..再想.
3.即然VS不认为这个文件改变了,那我直接给他换个新的行吗?
我果断改掉了这个不能下断的.cpp的文件名和对应.h的文件名,并且再改掉所有调用到.h的地方(.h文件名变了当然得改).编译,调试运行,下断,终于是好了,可以下断,没有提示了…..但是…..这种方法也太不方便了吧,一个大点的工程,如果不能下断的刚好是一个常用的类,那不得累死啊…再想.
4.也想不出什么了,网上看看吧.好多方法啊…(代码文本格式问题)
前两种方法都有说,
还有就是去掉 代码一致性检查 …我想这种方法不是我想要的,只是掩饰问题罢了,不是解决问题之道.
还有说 “编辑”–>”高级”–>”格式化选定内容”(也就是选中文本,然后按ctrl+K,ctrl+F),不过试了不管用,不过即然别人说了,肯定某种情况下是能解决问题的.
还有说可能是代码行过长,或者加了什么特殊字符的原因.
还有说用记事本重打开不能下断的文件,再另存为UNICODE编码的文件.
感觉估计是还有此道理,MS也不一定能考虑的万无一失,有可能编译器处理文本时会有点问题,并且我的代码里确实有几行代码较长,却没的换行.
先改吧,为了一次搞定这个可能的格式问题,单行过长问题改完后,再用记事本另存成unicode编码的.保存编译…….过了不长的时间,F5调试运行,再去下断,我的那个神啊………终于能下正常断点了,不再提示了…..
总结:虽然问题是解决了,但是我还是没有想出过所以然来…虽说是通过代码的格式,编码格式改变来解决了这个问题,但是真的是格式问题吗?好像不是吧….如果格式有问题,那么我第3种方法只改文件名不应该能解决问题,因为代码文本格式没有变化啊..如果不是格式问题,但是能过改代码格式和编码方式,问题却解决了……
最终结论: 不认真的,不仔细,不为用户着想的MS啊,愿你早日破碎虚空,离开这个世界吧.
(这个问题在VC中就有的吧,现在都到VS2010了竟然还没有解决,难道是MS没有能力?我相信其能力,只是MS真的不够用心)
如果上面的方法都还不能命中断点, 那么试试这个方法.
(1): 全选.cpp文档中的代码(Ctrl+A)
(2):代码进行自动格式化。(Alt + F8)或者(Ctrl + K,Ctrl + F),或者,菜单—>编辑—>高级—>设置选定内容的格式。 这个方法有时也能解决断点不能命中的问题。
但是我的问题还是没能解决到,这真的让人很是憔悴啊!继续找BUG后续解决了在更新!
解决问题啦!!!!!!!
不好意思更新晚了:
BUG早就找出来了,突然我发现项目的生成路径不对,我的整个框架运行起来是需要动态库的支持,后来找到了我的逻辑模块动态库最新生成的都在以前项目框架的文件夹内,现在的模块文件夹内的动态库都是以前那一个项目的,最终导致源码版本不一致的结果.
然后我想起来动态库在起初项目设置系统环境变量的时候设置路径跟现在的项目设置路径不一样导致了动态库生成的路径不一样,使其环境变量一致后BUG就消除了.
希望对有遇到此类型的同学有所启示!

三、操作

1、(失败):属性里面重生生成

2、(有时候有效):在代码里面ctrl+a 然后ctrl+k然后ctrl+s:让整个代码自动格式化

3、(最有效)(后来发现又不行了,然后直接将项目装还为vs2015):之前是bin文件为输出目录,现在改为bin2文件夹,然后重新生成一下,然后断点就可以了

  • 总结:因为我自己喜欢对整个项目备份,然后就有好多备份,导致可能项目产生的一些文件目录混了
  • 总结:输出目录修改后,就全部是新的了,然后重新生成一下。
www.zeeklog.com  - 解决:当前不会命中断点。源代码与原始版本不同

4、(转换为vs2015)发现转换为VS2015之后,就不会出现这种情况了