【问题标题】:Breakpoints in core .NET runtime?核心 .NET 运行时中的断点?
【发布时间】:2010-09-08 20:14:55
【问题描述】:

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

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

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

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


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

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

【问题讨论】:

  • 如果您只需要在某些 .NET 方法被命中时的堆栈跟踪,则不需要源代码。 Visual Studio 中普通的旧断点窗口可以处理这个问题。看到这个问答:stackoverflow.com/questions/2192700/…

标签: .net runtime breakpoints sqlconnection


【解决方案1】:

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

Configuring Visual Studio to Debug .NET Framework Source Code

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

【讨论】:

    【解决方案2】:

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

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

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

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

    【讨论】:

    • 如何向接受字符串的 SqlConnection 的构造函数添加断点?我试过: System.Data.SqlClient.SqlConnection.ctor(string) System.Data.SqlClient.SqlConnection.ctor(string connectionString) ... 与 SqlConnection 而不是 ctor 相同。
    【解决方案3】:

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

    编辑

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

    【讨论】:

    • 如果您只需要在某些 .NET 方法被命中时的堆栈跟踪,则不需要源代码。 Visual Studio 中普通的旧断点窗口可以处理这个问题。看到这个问答:stackoverflow.com/questions/2192700/…
    【解决方案4】:

    我差点忘了提到Deblector - 它是一个反射器插件,可以让您调试几乎任何没有源代码的 .net 应用程序 :)

    【讨论】:

      【解决方案5】:

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

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

      【讨论】:

      • 嘿!这次我跑赢了你 8-)
      • 该死的。 5 分钟内 2 次 :) 。这类事情的“最佳实践”是什么,我应该删除我的答案吗?
      • 我今天无聊死了。所以很有趣!
      • 我会留下我的答案。虽然我们都有相同的答案,但我有一个不同的链接,有一天可能会对某人有所帮助。
      【解决方案6】:

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

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

      【讨论】:

        猜你喜欢
        • 2017-08-12
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-01-09
        • 2018-10-17
        • 2020-04-10
        • 2016-05-31
        • 2019-08-16
        相关资源
        最近更新 更多