【问题标题】:Debugging in VS without the source code在没有源代码的情况下在 VS 中调试
【发布时间】:2012-11-21 16:03:56
【问题描述】:

我需要调试一些程序集,因为它们会抛出异常。这是我的程序集,但我没有它们的源代码。我有的是他们的 pdb 文件。

有没有办法通过 Visual Studio 调试这些程序集?

--编辑--

当然,我也可以反汇编得到它们的*.il 文件。它会以某种方式帮助我吗?

【问题讨论】:

  • 如果您没有来源,您希望能够用这些信息做什么?你无法解决任何问题......
  • 也可能是调用程序集的代码未使用正确的数据调用。如果程序集没有提供足够的信息,那么您不知道发生了什么。我希望有时能够跟踪程序集...
  • pdb文件msdn.microsoft.com/en-us/library/…的更多解释

标签: c# .net visual-studio-2010 debugging


【解决方案1】:

其实有几种方法可以做到这一点:

  1. 使用 dnSpy - 免费的开源 .net 调试器和程序集编辑器 https://github.com/0xd4d/dnSpy
  2. 使用 dotPeek 设置符号服务器(也是免费的)https://www.jetbrains.com/help/decompiler/Using_product_as_a_Symbol_Server.html
  3. 使用 Resharper 反编译器为您的 Visual Studio 中的外部模块加载符号。我认为这是最简单的方法。我已经在我的博客https://cezarypiatek.github.io/post/debug-without-sources-part-one/ 上描述了整个过程

【讨论】:

    【解决方案2】:

    这正是我支付Reflector 的原因。需要调试别人的程序集?它完美地工作

    【讨论】:

      【解决方案3】:

      据我所知,PDB 文件只是用于调试的指针。也就是说,如果您没有源代码,那么 PDB 文件只会为您提供堆栈跟踪。

      我不知道 Visual Studio 是否可以处理它,您可能需要手动连接到该进程。

      【讨论】:

      • 那么我应该如何处理 pdb 文件?
      • 您的程序集应该以\bin\Debug\bin\Release 结尾,因此也将PDB 文件放在那里。当您使用 VS 调试应用程序时,您会捕获异常并查看堆栈跟踪和内部异常。我有一个记录器,曾经使用 PDB 文件获取堆栈,我花了一些时间才明白为什么它在没有 PDB 文件的情况下在发布时崩溃。
      【解决方案4】:

      不完全是在 Visual Studio 中,但我过去在反射器中写了这样一个工具,calle d Deblector。不再由我管理,但看看。当然调试体验与 Visual Studio 中的不一样,但有时足以让你摆脱困境。

      【讨论】:

      • 如果我有它们的 il 代码对我有帮助吗?我的意思是在 VS 中调试。
      • @ALan Dert 您在 IL 级别进行调试,但是由于反射器您可以看到当前源,我说不是最佳的,但总比没有好:)
      【解决方案5】:

      查看 dotPeek: https://www.jetbrains.com/decompiler/

      您可以将其设置为 Visual Studio 中的符号服务器,以生成允许您调试的 PDB 文件。它非常易于使用,并且与许多付费产品一样好。

      您可以直接从 nuget 添加库,或指向 DLL。

      【讨论】:

        猜你喜欢
        • 2012-11-03
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-06-20
        • 2018-01-09
        • 2012-09-07
        相关资源
        最近更新 更多