我将一个应用程序从VC6移植到VS 2008.我在发布版本中重建了该应用程序。 Pdb文件位于exe所在的文件夹中。但是当我加载应用程序并提出断点时,我收到以下消息
“当前没有点击断点。此文档没有加载任何符号”
问题的原因是什么?
答案 0 :(得分:2)
调试器找不到应用程序或PDB。
启动程序时,“输出”窗口中会显示加载的二进制文件。确保正在加载正确的文件。当一切正常加载时,输出看起来像这样:
'hacks_vs10.exe':已加载 'C:\ Users \ john \ Documents \ Visual Studio 2010 \项目\ hacks_vs10 \ 64 \调试\ hacks_vs10.exe”, 符号已加载。
当找不到PDB时,它不是说“已加载符号”,而是说:
无法找到或打开PDB文件
确保首先运行正确版本的应用程序(检查运行路径),然后确保PDB位于该目录中。您可以通过调整“项目>属性...>链接器>生成程序数据库文件”来更改生成PDB的位置
答案 1 :(得分:1)
调试器找不到与您放置断点的源位置相关联的代码。
这可能有很多原因。我经常发现的是一段真正没有编译的代码。(或者是因为预处理器条件或死代码删除)。
我想也可能有其他原因(例如内联,但理论上,编译器可以为所有内联生成正确的映射。我不知道VS2008在这里做了什么。)
您确定要将断点放在应该执行的代码路径中吗?
答案 2 :(得分:0)
您提到的PDB文件可能与发布版本无关,
发布版本中通常不存在调试信息(尽管如果必须,可以启用它,但应该预期由于编译器优化而产生令人惊讶的效果)。
因此,您只能在已知的DLL入口点上设置断点(可能通过“模块列表”视图 - 自从我使用Visual Studio以来已经有一段时间了)或直接在汇编指令上设置断点。
请注意,您可以使用调试符号编译部分应用程序。
答案 3 :(得分:0)
我刚刚解决了类似的问题
我不确定这些问题中的哪一个解决了问题,但确实如此!