【问题标题】:visual studio 2010 c++ debugging symbols loaded but can't find source codevisual studio 2010 c++ 调试符号已加载但找不到源代码
【发布时间】:2012-01-27 16:28:48
【问题描述】:

我在 2010 中指定了符号 (pdb) 文件,以便正确加载它,但我收到 No source available 错误并且 Browse to Find Source Code 显示为灰色。有谁知道我如何指定源代码目录或查看 pdb 以找出它在哪里?

编辑:我的 DLL 正在被外部程序调用。错误发生在我的 DLL 中,所以我有源代码。发生错误时,我单击“调试”,pdb 符号已加载,但未加载源代码。

【问题讨论】:

  • PDB 文件包含 .exe 文件或 .obj 文件的调试和项目信息。我怀疑您是否可以“查看 pdb 以找出源代码目录的位置”。
  • 我可以问你你到底想做什么?
  • @LihO 很抱歉,如果不清楚 - 我已经更新了问题。谢谢。

标签: c++ visual-studio-2010 debugging


【解决方案1】:

如果您将 DLL 从其构建目录中移出,则调试器可能无法自行找到源代码文件。您可以做的第一件事是右键单击解决方案资源管理器窗口中的解决方案根节点、属性、通用属性、调试源文件,然后将路径添加到 DLL 项目源目录。

第二种方式:调试器在第一次需要查找源代码文件时提示您。如果您曾经在该对话框上单击“取消”,当您不知道它的真正要求时,这是很常见的事情,那么 IDE 会记住您的选择并且不会再次提示您。通过删除或重命名解决方案目录中隐藏的 .suo 文件来解决此问题。

【讨论】:

  • 我也有类似的问题。我正在调试一个应用程序,但无法进入另一个模块 (DLL) 中定义的函数。 模块窗口 报告已为该 DLL 加载了符号,但 IDE 并未单步执行该函数。我已经设法进入 Disassembly 模式,但是我无法切换回源代码(选项 Go To Source Code 显示为灰色)。自编译以来,我没有移动源代码。我试过删除 .suo 文件并设置调试源文件 - 没有帮助。有什么想法吗?
  • 我的可执行文件有类似的问题,但它没有被移动。输出窗口显示符号已加载但它说源不可用。它具有浏览源代码或进行反汇编的选项。源代码选项显示为灰色。如果我手动打开源文件并尝试设置断点,它会显示一个空心圆圈,表示模块未加载。仅在某些解决方案中发生。很奇怪。
  • 现在是 2019 年 @AdrianMcCarthy,我遇到了这种奇怪的行为。我花了 2 个小时检查源代码搜索路径并检查了 PDB。我在同一台 PC 上安装了 Visual Studio 2019 和 2017,它们的行为方式相同。然后我去做了一个全新的项目,看看它是否也有问题。很好。回到最初有问题的解决方案,它运行良好。
【解决方案2】:

据我了解,你只是想调试你的程序,你有 DLL 的形式。问题是外部程序使用了这个 DLL,而您在 错误发生后弹出的窗口中单击“调试”。

我假设您想在 Visual Studio 中打开您的项目,然后按 Ctrl + Alt + P 打开“附加到进程”窗口,您应该在其中选择使用此 DLL 的进程(iexplore.exe 或您正在使用的任何东西) 以便您可以在那里切换一些断点并查看发生错误的之前发生了什么。

【讨论】:

    【解决方案3】:

    @Hans Passant 的 hack 有效,但实际上有一种官方方法可以实现这一点:在解决方案资源管理器中右键单击您的解决方案,选择属性/通用属性/调试源文件。当提示输入源路径时,您应该能够查看和编辑之前选择“取消”的所有文件的列表。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-03-03
      • 2011-10-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-01-27
      相关资源
      最近更新 更多