嗨,大家好,
我需要创建一个可以与WinDbg交互并从中提取数据的.NET应用程序。人们说要使用DbgEng API。但我需要的是满足以下条件的应用程序:
我使用WinDbg调试应用程序说A
我将在.NET中创建的第二个应用程序说应用程序B必须连接到WinDbg并提供应用程序A的代码流以及寄存器值,调用堆栈等。随着调试的进行逐个
如果我需要读取内存,我需要从B发出命令,使其进入WinDbg并返回任何给定内存地址的内存转储并返回B
我该怎么做?有没有像:
为WinDbg构建扩展,以便将我的.NET应用程序B连接到它可以提供交互性,或者是否有可用于WinDbg的API或使用IPC连接WinDbg和我的应用程序B?
提前致谢
答案 0 :(得分:1)
如果您可以使用快速而肮脏的解决方案,您可能会对使用.logopen
感兴趣,它会将WinDbg输出写入文件,并且可以从那里读取。并查看.ocommand
,它可以指示WinDbg从另一个通过OutputDebugString(...);
发送命令的应用程序获取其命令
除此之外,这个问题非常通用,需要很长的答案。这可能是您被评论者贬低的一个原因。首先,您可能会尝试编写一个小型教程WinDbg扩展,以便您熟悉一般编写WinDbg扩展。如果可行,总会有一种通过命名管道,HTTP或类似方式与其他程序互连的方法。
提出的一个问题是:你为什么要这样做?您的应用程序B可能永远不会达到WinDbg的功能,只是阻碍了实际的调试。使用DbgEng API可能比依赖WinDbg的行为更好,这不是一个真正的API,通常可以有突破性的变化。