断点不打

时间:2011-05-17 10:44:05

标签: c++ visual-studio-2008

我将一个应用程序从VC6移植到VS 2008.我在发布版本中重建了该应用程序。 Pdb文件位于exe所在的文件夹中。但是当我加载应用程序并提出断点时,我收到以下消息

“当前没有点击断点。此文档没有加载任何符号”

问题的原因是什么?

4 个答案:

答案 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)

我刚刚解决了类似的问题

  • 我重新引用了我所有的DLL
  • 转到(工具 - >选项,“项目和解决方案”,“构建并运行”)并将“项目过期时运行”设置为“提示构建”

我不确定这些问题中的哪一个解决了问题,但确实如此!