关于.net:Visual Studio调试引用的DLL

Visual Studio Debugging Referenced DLL

我有一个ASP.NET网站,该网站使用另一个Visual Studio解决方案(具有DLL的原始解决方案-.cs文件,.csproj.sln等)中的已编译DLL作为参考。

此DLL出现在网站上,这是一个异常,我想对其进行调试(DLL)。我可以这样做吗?我可以以某种方式深入到DLL,设置断点等吗?我听说过"附加调试器",但是我从未这样做过,当然也没有使用DLL。要执行什么步骤?


堆栈溢出问题在Visual Studio.NET中调试第三方DLL?在问同样的事情。基本上,答案是使用.NET Reflector反编译DLL并查看代码。

但是,如果您具有DLL的解决方案和所有源代码,则可以更改引用以指向另一个项目而不是DLL。然后,您可以像执行代码中的任何其他步骤一样进入这些函数。

如果有代码,另一种方法是运行应用程序并将其附加到进程。为此,您将在Visual Studio中打开另一个解决方案,并将调试器附加到ASP.NET辅助进程(aspnet_wp或类似的东西,如果我没记错的话)。这将使您能够设置断点,并在您访问网站的正确部分时使其被命中。例如,如果您要浏览到本地IIS上InternetExplorer中的站点,那将是ASP工作进程。如果您在Visual Studio中运行它,则可能正在使用内置的Web浏览器。因此,您需要附加该内容。

如果您也有用于DLL的pdb文件,则可能有一种方法可以执行此操作,但是我从未真正尝试这样做。我知道如果您拥有pdb文件,则可以在使用WinDbg之类的工具进行调试时找回源代码。