我想通过添加对 .NET 托管进程故障的支持来扩展我的开源Bug Finder项目。
有人知道如何将我的应用程序与 .NET 框架附带的 WinDBG SOS.DLL 扩展接口连接吗?
我在哪里可以找到有关上述 DLL 的任何有用信息?
非常感谢!
安东尼奥
我想通过添加对 .NET 托管进程故障的支持来扩展我的开源Bug Finder项目。
有人知道如何将我的应用程序与 .NET 框架附带的 WinDBG SOS.DLL 扩展接口连接吗?
我在哪里可以找到有关上述 DLL 的任何有用信息?
非常感谢!
安东尼奥
我注意到我的网站已链接到此,因此我将尝试给出答案。你在这里有三个选择,一种简单的方法,一种更难的方法,还有一种更难的方法。
我假设您通过查看您的 codeproject 站点(也附注,codeproject?真的吗?)在您的应用程序中已经有一个 IDebugClient 实例。鉴于此,您可以使用IDebugControl::AddExtension加载 SOS 扩展,然后使用IDebugControl::CallExtension在其上调用命令。这显然不是很好,因为您得到的只是字符串,但是,这直接回答了您的问题,以及如何在您的应用程序中“使用”SOS。
下一个选项是,如果您只关心 .NET 4.5+,您可以使用我的 SDbgExt 库(请参阅我的博客)将 SOS 的完整后端公开为一个不错的 API。我很乐意解释如何使用它,但这样做超出了本网站的范围。
最后,您也可以直接使用 IXCLRDebugProcess 接口,但这样做相当复杂。在 .NET 4 和 .NET 4.5 之间,接口完全改变了,所以如果你想支持旧的 .NET 版本,你需要编写两个实现。