2009-11-04 137 views
2

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

有一个例外来到这个DLL的网站,我想调试它(DLL)。我可以这样做吗?我能不能深入了解DLL,设置断点等等?我听说过“附加调试器”,但我从来没有这样做过,当然也没有DLL。有什么步骤来做到这一点?

回答

6

堆栈溢出问题Debugging a third-party DLL in Visual Studio.NET?问同样的问题。答案基本上是使用.NET Reflector反编译DLL并查看代码。

但是,如果您有DLL的解决方案和所有源代码,那么您可以将引用更改为指向另一个项目而不是DLL。然后,您可以像代码中的任何其他代码一样进入功能。

如果您有代码,另一种方法是运行应用程序并附加到进程。为此,您可以在Visual Studio中打开另一个解决方案,并将调试器附加到ASP.NET工作进程(如果我正确记得的话,可以使用aspnet_wp或类似的东西)。这将允许您设置断点,并在您访问网站的正确部分时触发它们。例如,您将在本地IIS的Internet  资源管理器中浏览本网站的ASP工作进程。如果你在Visual Studio中运行它,那么它很可能会使用内置的Web浏览器。所以你需要重视这一点。

如果您还有DLL的pdb文件,可能有办法做到这一点,但我从来没有真的试过这样做。我知道如果你有pdb文件,那么当你使用WinDbg等工具进行调试时,你可以获得源代码。