调试dll的时候发现断点没有触发,以下总结一下在网上找到的解决方案。
一、 确定dll,pdb被程序正常加载
二、解决方案
1、VS设置
- 解决方案配置是 Debug ,但没有在工程属性页中“Alt+F7”->“配置属性”->“C/C++”->“常规”->“调试信息格式”,选择“用于“编辑并继续”的程序数据库(/ZI)”。另外,在“配置属性”->“链接器”->“调试”->“生成调试信息”中,选择“是”。
- 解决方案配置是 release ,直接F5调试就可以,VS会提示你“没有找到调试信息,要继续调试吗?”,选择“是”即可。
- 检查工程所在路径是不是有中文,有VS不支持中文路径的可能(参照http://blog.csdn.net/red_hope/archive/2007/10/20/1833916.aspx 的经验)
- 删掉.ncb和.opt文件,然后rebuild all。
- 看是否有:“warning C4819: 该文件包含不能在当前代码页(936)中表示的字符。请将该文件保存为 Unicode 格式以防止数据丢失”警告,把那个cpp文件用记事本打开,另存为unicode格式,再重新编译。(参照http://www.cppblog.com/qiujian5628/archive/2008/04/11/41806.html vs2005奇怪的断点无效问题 )
- 工具->选项->调试->常规,将”要求源文件与原始版本完全匹配”的勾取消就可以了!
其他参考资料:
1、行尾标准化:
http://www.cnblogs.com/liubiqu/archive/2009/01/16/1376891.html
2、编码方式与C4819警告:
http://bbs.csdn.net/topics/390457909
https://social.msdn.microsoft.com/Forums/vstudio/en-US/94153c9d-64ad-4f41-848c-c96b359e4542/unicode-error?forum=vcgeneral
参考资料:
https://blog.csdn.net/lsldd/article/details/46049481
https://bbs.csdn.net/topics/390457909
http://www.cppblog.com/qiujian5628/archive/2008/01/24/41806.html