今天是端午,估计是加班的原因,VS2008给我开了个玩笑.
提示:当前不会命中断点。源代码与原始版本不同.
为什么会出现呢?
原因当前大家都清楚,就是因为编译器生成的符号文件与源代码不同.
那我的代码明明已经改变并存档,并且编译了,为什么还是不同呢?
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真的不够用心)
5. 如果上面的方法都还不能命中断点, 那么试试这个方法.
(1): 全选.cpp文档中的代码(Ctrl+A)
(2): 代码进行自动格式化. (Alt+F8) 或者 (Ctrl+K, Ctrl+F), 或者, 菜单--->编辑--->高级--->设置选定内容的格式.
这个方法有时也能解决断点不能命中的问题.
顶 0 踩 0
猜你在找
查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
个人资料
xiaohuh421
积分:759
文章搜索
文章分类
文章存档
阅读排行
评论排行