3

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

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

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

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


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

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

4

6 回答 6

7

您可以下载 .NET 源代码并直接在 .NET FW 源代码中设置断点。

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

于 2008-09-14T11:13:36.533 回答
3

根据这篇文章,您可以下载 .NET 框架的源代码,然后使用 Visual Studio 对其进行调试:

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

于 2008-09-14T11:14:28.730 回答
3

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

于 2008-09-14T11:37:43.713 回答
3

虽然源代码调试肯定更好,但您不需要 pdbs 或 VS 调试器的源代码来为您想要的函数设置 bp。

确保您转到工具/选项/调试器并关闭名为“仅我的代码”的选项。由于框架不是“你的代码”,调试器无助地阻止你在那里设置断点。

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

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

于 2008-09-14T22:13:13.733 回答
2

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

编辑

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

于 2008-09-14T11:23:24.420 回答
0

好的,如果你想要权威指南,这里是:

配置 Visual Studio 以调试 .NET Framework 源代码

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

于 2008-09-14T22:39:51.487 回答