核心.NET运行时中的断点?

时间:2008-09-14 11:08:17

标签: .net runtime breakpoints sqlconnection

我有一个内部构造和使用SqlConnection类的第三方库。我可以从班级继承,但它有很多重载,到目前为止我一直找不到合适的。我想要的是使用正在使用的连接字符串的参数。

我有没有办法在.NET库核心本身设置断点?特别是在SqlConnection类的构造函数中,以便我可以查看堆栈跟踪并查看它实际构建的位置?

除此之外,还有其他方法可以做到这一点吗?

具体来说,我想要做的是使用 Application Name 参数,以便在查看连接时更容易在服务器上识别我们的应用程序。


编辑:好吧,看来我需要更多帮助。我想我已经启用了与符号服务器支持相关的所有内容,并且我注意到我配置的目录已经填满了包含.pdb文件的目录。但是,我无法获得SqlConnection类的实际源代码。

是否有一些明确的指导如何成功地做到这一点?

6 个答案:

答案 0 :(得分:7)

您可以download .NET source code并在.NET FW源代码中设置断点。

您可以使用NetMassDownloader快速获取.NET源代码。

答案 1 :(得分:3)

根据本文,您可以下载.NET框架的源代码,然后使用visual studio进行调试:

http://weblogs.asp.net/scottgu/archive/2007/10/03/releasing-the-source-code

答案 2 :(得分:3)

我差点忘了提及Deblector - 它是一个Reflector插件,允许你调试几乎任何没有源代码的.net应用程序:)

答案 3 :(得分:3)

虽然源调试非常好,但是VS调试器不需要pdbs或源来为所需的函数设置bp。

确保转到Tools / Options / Debugger并关闭名为“Just My Code”的选项。由于框架不是“您的代码”,调试器无法阻止您在那里设置断点。

接下来,您需要方法的全名,因为它显示在元数据中。这包括它嵌套的任何名称空间。如果你需要找到名字,我建议使用ILDasm或Reflector。

在左上角的断点窗口中有一个“new bp”菜单按钮。其中一个选择是在函数名称上设置bp。当对话框出现时,取消选中intellisense检查名称,因为您没有项目。我希望有所帮助。

答案 4 :(得分:2)

如果您不能使用Microsoft提供的.Net框架源代码进行源代码级调试,您可以尝试使用其他调试器。像mdbg甚至是windbg。

修改

This解释了获取.Net框架的已发布部分以及如何非常详细地设置断点。 NetMassDownloader将在一次下载中为您提供所有内容(pdb和源代码)。但并非所有.Net框架的源代码都可用。如果您的SqlConnection不是,您可以像我提到的那样使用IL调试器。不要忘记Lutz的Reflector,无论如何都要看一下源代码。

答案 5 :(得分:0)

好的,如果你想要权威指南,请点击这里:

Configuring Visual Studio to Debug .NET Framework Source Code

如果您需要帮助,请继续告诉您使用了哪些步骤?