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

时间:2016-10-30 08:10:05

标签: c# windbg stack-trace dump dmp

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

我知道如何使用程序windbg手动完成它,所以如果有一种方法可以使用C#连接到Windbg,也可以解决问题。

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

谢谢!

3 个答案:

答案 0 :(得分:0)

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

  

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

因此不需要WinDbg。

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

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

答案 1 :(得分:0)

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

https://github.com/blabberer/chashdbg

答案 2 :(得分:0)

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

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

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

感谢您的帮助!