2

我正在处理一个项目并尝试修复系统中发现的错误。我有权访问的代码无法构建(这是一个包含大量 dll 文件的大型项目,其中一些文件在我的工作区中丢失了)。我可以访问我正在尝试调试的代码部分,但无法构建它。所以我开始编译.exe文件并在VS中附加它。当我在代码中设置断点时,它被禁用并说No symbols have been loaded for this document.所以我的问题是,调试器正在寻找哪些额外的信息/文件?我假设它正在寻找pdb该特定程序集的文件,该文件在我的机器上不存在。

当我尝试附加到 exe 文件时,我收到以下警告:

在此处输入图像描述

4

3 回答 3

6

调试器正在寻找哪些附加信息/文件?我假设它正在寻找该特定程序集的 pdb 文件,该程序集在我的机器上不存在。

你的假设是正确的。

您可以解决问题的一些方法是:

  • 获取具有您的 PDB 的符号服务器的位置,并将 VS 配置为自动下载 PDB。
  • 通过其他方式获取 PDB。
  • 弄清楚如何自己构建它;建立自己的 PDB。
  • 询问任何构建它的人来为您调试问题。这可能是他们的错误,所以让他们做这项工作。
  • 通过阅读源代码并在您的脑海中模拟程序的执行来调试问题。当您遇到在模拟中没有执行应有操作的代码时,这就是您的错误。
  • 在调试器中调试问题,读取汇编代码而不是源代码。
于 2013-05-10T18:49:44.360 回答
3

它正在寻找 pdb 文件,没有它您将无法调试。我不知道您的情况的详细信息,但在您的系统上构建它可能是最好的方法。以我的经验,这种情况通常是由于源树中的节点太深。在从事大型项目时,在源代码控制中采用更浅的节点极大地简化了我的生活。当您从事这样的项目时,您必须能够构建它,否则您可能一事无成。

如果您要远程调试的东西来自官方构建,则它不会有 pdb 文件,因此没有简单的解决方法,例如找到放置文件夹并复制 pdb。

于 2013-05-10T18:48:35.533 回答
0

我不明白你会通过运行任何可执行文件来做什么。你说你的代码没有构建。因此,运行任何可执行文件都无法帮助您。您的代码无法编译是您所面临的,而不是共享构建错误或编译错误?对于缺少的程序集 - 从项目引用中删除并注释掉项目中可能引用任何此类程序集的代码。之后你可以构建你的代码吗?

一旦您可以构建代码,您就可以继续调试或附加任何可执行文件。

希望这可以帮助!

于 2013-05-10T18:59:16.590 回答