核心.NET运行时中的断点?
我有一个内部构造并使用SqlConnection类的第三方库。我可以从该类继承,但是它有很多重载,到目前为止,我一直找不到合适的重载。我想要在要使用的连接字符串上添加一个参数。
我是否可以在.NET库核心本身中设置断点?特别是在SqlConnection类的构造函数中,这样我就可以查看堆栈跟踪并查看它的实际构造位置?
除此以外,还有其他方法可以做到这一点吗?
具体来说,我想做的是添加"应用程序名称"参数,以便在查看连接时在服务器上更容易识别我们的应用程序。
编辑:好吧,看来我需要更多帮助。我想我已经启用了与符号服务器支持有关的所有功能,并且我注意到配置的目录已经充满了包含.pdb文件的目录。尽管如此,我仍然无法获得SqlConnection类的实际来源。
是否有确定的指南来成功完成此操作?
解决方案
回答
我们可以下载.NET源代码,并直接在.NET FW源代码中设置断点。
我们可以使用NetMassDownloader快速获取.NET源。
回答
根据本文的介绍,我们可以下载.NET框架的源代码,然后使用Visual Studio对其进行调试:
http://weblogs.asp.net/scottgu/archive/2007/10/03/releasing-the-source-code
回答
而且,如果我们不能通过Microsoft提供的.Net框架源代码使用源代码级调试,则可以尝试使用其他调试器。像mdbg甚至是windbg。
编辑
这解释了如何获取.Net框架的已发布部分以及如何详细设置断点。 NetMassDownloader一次下载即可为我们提供所有内容(pdb和源代码)。但是,并非.Net框架的所有源代码都可用。如果SqlConnection不是,则可以始终使用我提到的IL调试器。而且不要忘了Lutz的Reflector还是让我们看一下源代码。
回答
我几乎忘了提起Deblector这是一个Reflector插件,它可以让我们调试几乎任何没有源代码的.net应用程序:)
回答
虽然源调试肯定会更好,但是我们不需要VS调试器的pdbs或者源就可以在所需的功能上设置bp。
确保转到"工具/选项/调试器"并关闭名为"仅我的代码"的选项。由于该框架不是"代码",因此调试器无助于阻止我们在此处设置断点。
接下来,我们需要显示在元数据中的方法的全名。这包括它嵌套的任何名称空间。如果需要查找名称,我建议使用ILDasm或者Reflector。
左上角的断点窗口上有一个"新点子"菜单按钮。选择之一是在函数名称上设置一个bp。出现对话框时,请取消选中有intellisense的名称,因为我们没有项目。希望对我们有所帮助。
回答
好的,如果我们要使用权威指南,请按以下步骤进行:
配置Visual Studio调试.NET Framework源代码
如果我们需要帮助,请继续并告诉使用我们执行了哪些步骤?