调试到已编译的DLL文件

时间:2010-11-22 12:00:46

标签: c# .net visual-studio

我有一个第三方DLL(CSLA),它引用了我的项目。现在一切正常,但是当CSLA因任何原因抛出异常时,它会显示带有内存地址等的反汇编。我想实际看到源代码。我做了以下但仍然没有区别。

  1. 在我的Visual Studio 2010中的我的代码选项中禁用调试。
  2. 检查正在加载的符号文件(Debug - > Windows - > Modules),看起来好像都是。
  3. 我的假设是否正确,只要有.pdb文件被加载,那么我应该能够调试到源代码?

    为什么我不能让调试器显示源代码?

3 个答案:

答案 0 :(得分:2)

没有。仅.pdb不包含源代码。它只是IL-location =>的映射文件。源代码行。

.NET Reflector Pro(非自由版)使您可以进入外部库代码。

答案 1 :(得分:0)

实际上pdb文件不能保证您能够单步执行源代码。 PDB包含有关源位置的信息,因此您必须获取源以进行此类调试。你可以做的一件事是使用Debug - >例外选项。您必须选中包含您获得(或添加新的)异常的复选框并调试您的应用程序。下次你会在抛出异常时刹车,你将能够收集堆栈痕迹。

答案 2 :(得分:0)

你真的拥有第三方DLL的源代码吗?如果没有,那就是你无法看到的原因。

Reflector(http://www.red-gate.com/products/reflector/)的付费版本可以调试为“反编译”代码,这通常非常清楚。这只适用于你遇到问题的DLL是.NET程序集,我不是100%肯定它是你的问题。