1

我想通过添加对 .NET 托管进程故障的支持来扩展我的开源Bug Finder项目。

有人知道如何将我的应用程序与 .NET 框架附带的 WinDBG SOS.DLL 扩展接口连接吗?

我在哪里可以找到有关上述 DLL 的任何有用信息?

非常感谢!

安东尼奥

4

1 回答 1

0

我注意到我的网站已链接到此,因此我将尝试给出答案。你在这里有三个选择,一种简单的方法,一种更难的方法,还有一种更难的方法。

我假设您通过查看您的 codeproject 站点(也附注,codeproject?真的吗?)在您的应用程序中已经有一个 IDebugClient 实例。鉴于此,您可以使用IDebugControl::AddExtension加载 SOS 扩展,然后使用IDebugControl::CallExtension在其上调用命令。这显然不是很好,因为您得到的只是字符串,但是,这直接回答了您的问题,以及如何在您的应用程序中“使用”SOS。

下一个选项是,如果您只关心 .NET 4.5+,您可以使用我的 SDbgExt 库(请参阅我的博客)将 SOS 的完整后端公开为一个不错的 API。我很乐意解释如何使用它,但这样做超出了本网站的范围。

最后,您也可以直接使用 IXCLRDebugProcess 接口,但这样做相当复杂。在 .NET 4 和 .NET 4.5 之间,接口完全改变了,所以如果你想支持旧的 .NET 版本,你需要编写两个实现。

于 2014-08-24T16:15:07.243 回答