“源文件与模块生成时的文件不同。仍要让调试器使用它吗?”
转载地址:http://labs.chinamobile.com/mblog/445_15768
今天在VS2005里改一个C++程序断点总是不管用,跟踪到有些文件后碰到标题里的提示。
网上查了一下,基本上解决方案都是:
在工具->选项->调试->常规 里把“要求源文件和版本匹配”的勾勾去掉
然后去掉“地址级的调试”的勾勾(这样就不会出现反汇编代码了)
显然这个方案未及根本问题,然后准备自己彻底解决掉它。
仔细看生成时输出窗口有这么个警告:
warning C4819: The file contains a character that cannot be represented in the current code page (936). Save the file in Unicode format to prevent data loss
猜想是不是转化不成功造成pdb里记录的源文件签名(可能是md5)和硬盘上的源文件不同造成这个问题。找到相应的文件,看到注释里有乱码,把乱码字符删掉后C4819错误消失,断点也生效了。问题解决。
注:按照C4819警告建议的方式,在"文件"->"高级保存选项"里把"编码"改为"UTF8 带签名.."也能解决问题。