今天调试一C++程序,按下F5,老是弹出一对话框显示信息:debugging information for 'myproject.exe' cannot be found or does not match. No symbols loaded. 翻译成中文大概就是:不能找到'myproject.exe' 的调试信息或者调试信息不匹配。符号文件未加载。
起初,我以为是没有生成.pdb文件的缘故,于是,我右击项目文件,点击属性,展开配置属性节点,展开C/C++节点, 点击了General后把Debug Information Format设置为:Program Database for Edit & Continue(/ZI). 跟着,又检查了其它选项,并且确信在项目文件的Debug文件夹下生成了相应的.pdb文件。
可是做了这些,还是没用。仍然弹出那个该死的对话框。
我于是另外新启动了一个VS实例,新建了一个简单的工程,按下F5, 调试没问题,嘿,这问题到底出在哪儿呢??
然后,我心想,你丫狠!看来我得来点比你更狠的,于是乎,我干脆运行咱的.exe文件,然后单击Visual Studio 的Tools菜单,选择Attach to process..., 并找到我的应用程序,还是没用!!!!
关键时刻咱得保持冷静!!!!分析下!
第一,我这个工程是前几天做过的。
第二,.pdb文件有,手动加载文件也试过。不过没用。
第三,新建一个项目调试,没问题。
脑袋里突然冒出:是不是.suo文件在作怪??
------解决方案-----
1. 关闭掉Visual Studio 实例。
2. 找到解决方案下的.suo文件并删除之。
3. 重新启动Visual Studio,或者直接双击.sln文件打开
4. 成功调试程序!
后来意识到这是Visual Studio非常严重的问题。因为.suo貌似非常容易损坏,但是它里面包含了许多调试信息,包括项目的打开文件列表、所有的断点、以及监视窗口中所有的内容。
可以运行如下命令来删除掉该文件:del /f /a:h /s *.suo
希望对遇到该类问题的朋友有所帮助!!欢迎提出问题讨论!
另外 有一些解决方法:
首先打开菜单 项目->项目属性页
选择 配置属性->链接器->调试->生成调试信息 改为 是
选择 配置属性->C/C++ ->常规->调试信息格式 改为 用于“编辑并继续”的程序数据库(/ZI)
选择 配置属性->C/C++ ->优化->优化 改为 禁用(/Od)