【问题标题】:How to use SOS.DLL inside my project如何在我的项目中使用 SOS.DLL
【发布时间】:2013-07-05 13:15:30
【问题描述】:

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

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

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

非常感谢!

安东尼奥

【问题讨论】:

标签: .net debugging winapi


【解决方案1】:

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

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

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-09-06
    • 2016-09-22
    • 2014-05-07
    • 2019-11-02
    • 2020-09-06
    • 2020-03-14
    • 2018-01-28
    • 2015-12-29
    相关资源
    最近更新 更多