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