1

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

我知道如何使用程序 windbg 手动执行此操作,因此,如果有一种方法可以使用 C# 连接到 Windbg,也可以解决问题。

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

谢谢!

4

3 回答 3

0

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

它是一个 Python 模块,可以在任何 Python 脚本中使用

所以不需要WinDbg。

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

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

于 2016-10-31T07:11:33.247 回答
0

如果您想从头开始并在 c# 中使用 dbgeng inerfaces,您可以尝试将我放在一起的这段代码

https://github.com/blabberer/chashdbg

于 2016-10-31T12:50:02.360 回答
0

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

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

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

感谢所有的帮助!

于 2016-11-01T08:23:40.470 回答