如何使用API​​或Extension或IPC将.NET应用程序与WinDbg连接?

时间:2013-12-30 11:05:48

标签: .net windbg

嗨,大家好,

我需要创建一个可以与WinDbg交互并从中提取数据的.NET应用程序。人们说要使用DbgEng API。但我需要的是满足以下条件的应用程序:

我使用WinDbg调试应用程序说A

我将在.NET中创建的第二个应用程序说应用程序B必须连接到WinDbg并提供应用程序A的代码流以及寄存器值,调用堆栈等。随着调试的进行逐个

如果我需要读取内存,我需要从B发出命令,使其进入WinDbg并返回任何给定内存地址的内存转储并返回B

我该怎么做?有没有像:

为WinDbg构建扩展,以便将我的.NET应用程序B连接到它可以提供交互性,或者是否有可用于WinDbg的API或使用IPC连接WinDbg和我的应用程序B?

提前致谢

1 个答案:

答案 0 :(得分:1)

如果您可以使用快速而肮脏的解决方案,您可能会对使用.logopen感兴趣,它会将WinDbg输出写入文件,并且可以从那里读取。并查看.ocommand,它可以指示WinDbg从另一个通过OutputDebugString(...);发送命令的应用程序获取其命令

除此之外,这个问题非常通用,需要很长的答案。这可能是您被评论者贬低的一个原因。首先,您可能会尝试编写一个小型教程WinDbg扩展,以便您熟悉一般编写WinDbg扩展。如果可行,总会有一种通过命名管道,HTTP或类似方式与其他程序互连的方法。

提出的一个问题是:你为什么要这样做?您的应用程序B可能永远不会达到WinDbg的功能,只是阻碍了实际的调试。使用DbgEng API可能比依赖WinDbg的行为更好,这不是一个真正的API,通常可以有突破性的变化。