C# 在没有源代码的情况下在VS中调试

C# 在没有源代码的情况下在VS中调试,c#,.net,visual-studio-2010,debugging,C#,.net,Visual Studio 2010,Debugging,我需要调试一些程序集,因为它们会引发异常。这是我的程序集,但我没有它们的源代码。我有的是他们的pdb文件 是否有任何方法可以通过Visual Studio调试该程序集 --编辑-- 当然,我也可以反汇编它们以获得它们的*.il文件。它会对我有什么帮助吗?不完全是在visual studio中,但我过去在reflector中写过这样一个工具,叫做d。不再是我的护身符,而是看一看。当然,调试体验与在VisualStudio中不同,但有时足以让您摆脱麻烦。据我所知,PDB文件只是调试的指针。也就是说,

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

是否有任何方法可以通过Visual Studio调试该程序集

--编辑--


当然,我也可以反汇编它们以获得它们的*.il文件。它会对我有什么帮助吗?

不完全是在visual studio中,但我过去在reflector中写过这样一个工具,叫做d。不再是我的护身符,而是看一看。当然,调试体验与在VisualStudio中不同,但有时足以让您摆脱麻烦。

据我所知,PDB文件只是调试的指针。也就是说,如果您没有源代码,那么PDB文件将只提供stacktrace


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

这正是我付费的原因。需要调试其他人的程序集吗?它工作得很好

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

  • 使用dnSpy-一个免费的开源.net调试器和程序集编辑器
  • 使用dotPeek设置符号服务器(也是免费的)
  • 使用Resharper反编译器为visual studio中的外部模块加载符号。我认为这是最简单的方法。我在博客上描述了整个过程
  • 查看dotPeek:

    您可以将其设置为VisualStudio内的符号服务器,以生成PDB文件,从而进行调试。它非常容易使用,与许多付费产品一样好


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

    如果没有源代码,您希望如何处理这些信息?您无法修复任何问题……也可能是调用程序集的代码没有使用正确的数据进行调用。如果程序集没有抛出足够的信息,那么您不知道发生了什么。我希望能够跟踪程序集有时…多一点的解释pdb文件它会帮助我,如果我有他们的il代码?我的意思是在VS.@ALan Dert中调试您在IL级别进行调试,但由于reflector,您可以看到当前源代码,我说过这不是最佳的,但总比没有好:)那么我应该如何处理pdb文件呢?您的程序集应该以
    \bin\debug
    \bin\Release
    结束,所以也将pdb文件放在那里。当使用VS调试应用程序时,捕获异常并查看堆栈跟踪和内部异常。我有一个记录器,它曾经使用PDB文件获取堆栈,我花了很多时间来理解为什么它在没有PDB文件的情况下在发行版中崩溃。