如何附加到进程并调试不构建的代码?

时间:2013-05-10 18:44:00

标签: c# debugging attach-to-process

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

修改

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

enter image description here

3 个答案:

答案 0 :(得分:6)

  

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

你的假设是正确的。

  

感谢任何帮助。

您可以通过以下方式解决问题:

  • 获取具有PDB的符号服务器的位置,并配置VS以自动下载PDB。
  • 通过其他方式获取PDB。
  • 弄清楚如何自己构建它;建立自己的PDB。
  • 问问谁建立了它来为你调试问题。这可能是他们的错误,所以让他们做好工作。
  • 通过阅读源代码并模拟脑中程序的执行来调试问题。当你遇到的代码没有在模拟中做到的时候,这就是你的错误。
  • 在调试器中调试问题,阅读汇编代码而不是源代码。

答案 1 :(得分:3)

它正在寻找pdb文件,没有它你将无法调试。我不知道你的情况的细节,但建立在你的系统上可能是最好的方法。根据我的经验,这种情况通常是由于在源树中占用了太深的节点。在处理大型项目时,在源代码控制中采用更浅的节点大大简化了我的生活。当你正在开展这样的项目时,你必须能够构建它,否则你可能无法到达任何地方。

如果您正在远程调试的东西来自官方版本,它将没有pdb文件,因此没有简单的解决方法,比如找到drop文件夹并复制pdb。

答案 2 :(得分:0)

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

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

希望这有帮助!