使用 C# 从蓝屏转储文件中检索堆栈

Using C# to retrieve stack from bluescreen dump file

我想知道有没有办法用C#打开蓝屏故障转储+加载符号,以检索内存堆栈。

我知道如何使用程序 windbg 手动完成此操作,因此,如果有使用 C# 连接到 Windbg 的方法,也可能会解决问题。

有人知道如何使用 C# 提取内存堆栈,或使用 C# 连接到 Windbg 吗?

谢谢!

我不知道任何 C# 解决方案,但 PyKd (Python) 可以做你想做的。虽然我主要使用 PyKd 作为 WinDbg 的插件,

It's a Python module and can be used in any Python script

所以不需要 WinDbg。

但是,某些命令的工作方式可能与 WinDbg 中的不同,例如dbgCommand() 将尝试 运行 调试器的命令,如果您在没有 WinDbg 的情况下工作,这可能是不可能的。

根据您的描述,您需要 loadDump()closeDump()setSymbolPath()setCurrentProcess()。进程和线程有 类,sp(堆栈指针)属性 可能会有帮助。

如果您想从头开始使用 C# 中的 dbgeng 接口,您可以尝试扩展我放在一起的这段代码

https://github.com/blabberer/chashdbg

感谢您的帮助,但我找到了一种更简单的使用方法... 由于Windbg可以使用cmd操作,所以很难找到和理解命令,但我设法使用cmd操作它。

之后可以从 C# 发送 cmd 命令,所以我只是使用 C# 发送命令,并使用 Windbg 的 -logo 命令将结果写入文件。

所以通过读取文件我可以解析结果并提取我想要的东西。

感谢大家的帮助!