vs2005下部分断点无效的问题

原创 2011年01月10日 19:01:00

     这两天在vs2005下的一个project中进行debug,但是出现了一个比较奇怪的现象,绝大多数文件都可以设置断点并且可以跟进去,唯独有一个修改量比较大的.cpp文件,前几次还可以设置断点并且跟进去,后来在那个设置的任何断点都无缘无故失效了。

 

      把整个project重新build了好几次,包括需要调用的一些第三方的.dll文件都重新生成重新link,都无法解决问题。就算强行进入这个文件,都会显示该文件与源文件不同,问是否继续。简直郁闷坏了。

 

      后来上网查了一些解决方法,其中有一个方法有效的解决了困扰我的问题。该方法说,有可能是因为在相应的.cpp文件中有中文编码或者其他非ASCII编码,导致文件要更改为unicode格式的形式才能把信息完全保存下来。同时还提到了一个warning C4819: 该文件包含不能在当前代码页(936)中表示的字符。请将该文件保存为 Unicode 格式以防止数据丢失

      然后我想起了在rebuild那个project的时候,明明见过这个warning,当时还很奇怪这个warning是干什么用的。然后想起在那个.cpp文件中有大量的中文注释,会不会是我在注释之外的地方在中文输入法的情况下输入了譬如回车换行的内容。如果有的话,那应该是紧挨着我写的注释才对。

 

      于是我把相应的.cpp文件中的注释给删除了。然后重新编译,结果,妥了!哈哈~真是太激动了!

 

 

      下面附上网上找到的方法的内容:

最近一工程中,在调试的时候,有些cpp文件都可以设置断点并且跟进去,但是有一个cpp文件总是不能设置断点,提示“当前不会命中断点。源代码与原始版本不同。” 重新更换过n次文件都不起作用,然后在goole搜索此类类似问题,找到下篇文章,然后我把那个cpp文件用记事本打开,另存为unicode格式,再重新编译,最后问题解决!也可以更改vs2005的设置,选项->常规,将要求源文件与原始版本完全匹配的勾取消就可以了!

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

修一个Bug,提交,然后更新了一下,编译,运行,发现我也染上这个症状了——只有那个文件无法插入断点。倒有些安心了,看来不是VC的Bug,而是源代码的问题。把这个文件回滚到更新前的版本,果然就没问题了。更新到下一个版本,问题就出来了。查看改动,没瞧出来什么。忽然发现有一个不常见的警告:“warning C4819: 该文件包含不能在当前代码页(936)中表示的字符。请将该文件保存为 Unicode 格式以防止数据丢失”。呵呵,应该就是它了。

警告有两个,一个是文件的,不带行号,另一个带行号。那一行是一个case语句,最后加了一句中文注释。把注释删掉,问题解决。把代码拷贝到UltraEdit中看十六进制代码,逐个字节滤过去,没发现什么奇怪的。然后开始逐步逼近问题,把注释前后汉字逐个拿掉,直到问题消失,最后剩下来的核心词是“即时消息”,搜索这个词,果然在整个项目里只有一个。在这个词前面增、删一个空格,问题就消失。郁闷的是把同一行代码拷贝到其他文件、位置都不会有这个问题。

恢复所有改动,更新到最新版本,问题又变了:警告只剩下一个,没了行号!用插入空格的方法定位问题,发现错误向前移动了几行。而且这次就算把警告消掉,还是无法添加断点。尝试了好一会儿没有效果,干脆用VC直接把整个文件格式化了一次,断点又可以用了。而且,这次再怎么插入空格都不会有C4819了。对比了一下修改前后的文件,依然没有什么发现。

搜索了一下,其他人也遇到过C4819,有的是因为Unix换行格式,甚至boost库中一个非ASCII作者名都会引发这个错误,但是这里应该是中文双字节字符错位的问题吧。因为警告等级开到了4,所以各种警告有些泛滥,他们又没有及时处理,这个警告就被淹没在警告堆里了……

 

 

 

 

 

 

 

 

 

 

PS:个人再加一句,修改vs2005的设置,选项->常规,将要求源文件与原始版本完全匹配的勾取消就可以了! 这一项网友反映最好不要更改。否则可能引起其他问题,毕竟vs2005默认的就是打勾的。

VS2005下使用VC,部分断点无效

VS2005下使用VC,部分断点无效,显示『当前不会命中断点。还没有为该文档加载任何符号』。 试过以下一些方法: 1、无效断点所在的项目和启动项目的设置:项目->属性->配置属性->C/C++->...
  • liubin15989534919
  • liubin15989534919
  • 2011年08月23日 11:21
  • 241

vs2005断点无效问题

 VS2005调试程序时,一个文件中无法设置断点,提示“当前不会命中断点。源代码与原始版本不同。”最后google到了下边两篇文章,终于解决。 http://msdn2.microsoft.com/z...
  • babafall
  • babafall
  • 2009年03月04日 11:53
  • 371

VS2005下断点无效 解决方法

VS2005下使用VC,部分断点无效,显示『当前不会命中断点。还没有为该文档加载任何符号』。试过以下一些方法:1、无效断点所在的项目和启动项目的设置:项目->属性->配置属性->C/C++->常规->...
  • YYUEN
  • YYUEN
  • 2011年03月03日 17:47
  • 482

VS2005 常用断点调试

转自:http://blog.csdn.net/discxuwei/article/details/6752620
  • jiangnanyidiao
  • jiangnanyidiao
  • 2014年07月14日 21:26
  • 1213

vs2005 断点无效

会有这种情况,在模拟器中调试程序没问题,而在手持设备上调试会出现断点无效的问题,一想是因为设备上的数据库是自己安装的sqlce3.0,估计问题出在这里,后来在网上找到类似问题,安装.net compa...
  • emeer
  • emeer
  • 2008年06月04日 10:21
  • 743

vs2005断点无效解决办法

转载:http://www.cnblogs.com/jack-liang/archive/2011/04/30/2033515.html   1.删除无法设定断点项目文件夹下的obj目录(这个很有...
  • zhouschina
  • zhouschina
  • 2013年03月20日 16:03
  • 732

vs2005断点无效

VS2005 断点失效(断点不可用)解决方案在网上搜罗了一下,如下:  1、无效断点所在的项目和启动项目的设置:项目->属性->配置属性->C/C++->常规->调试信息格式,这里不能为『禁用』; ...
  • ndzjx
  • ndzjx
  • 2015年10月11日 07:54
  • 298

vs2005奇怪的断点无效问题

vs2005奇怪的断点无效问题 最近一工程中,在调试的时候,有些cpp文件都可以设置断点并且跟进去,但是有一个cpp文件总是不能设置断点,提示“当前不会命中断点。源代码与原始版本不同。” 重新更换过n...
  • ysysbaobei
  • ysysbaobei
  • 2009年05月13日 14:25
  • 1112

VS2005断点失效(无效)的问题

VS2005下使用VC,部分断点无效,显示『当前不会命中断点。还没有为该文档加载任何符号』。试过以下一些方法:1、无效断点所在的项目和启动项目的设置:项目->属性->配置属性->C/C++->常规->...
  • zhongguoren666
  • zhongguoren666
  • 2009年12月07日 16:19
  • 741

vs2005奇怪的断点无效问题

vs2005奇怪的断点无效问题 最近一工程中,在调试的时候,有些cpp文件都可以设置断点并且跟进去,但是有一个cpp文件总是不能设置断点,提示“当前不会命中断点。源代码与原始版本不同。”重新更...
  • antswallow
  • antswallow
  • 2009年07月11日 19:17
  • 482
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:vs2005下部分断点无效的问题
举报原因:
原因补充:

(最多只允许输入30个字)