我想知道是否有一种方法可以使用C#打开蓝屏故障转储+加载符号,以便检索内存堆栈。
我知道如何使用程序windbg手动完成它,所以如果有一种方法可以使用C#连接到Windbg,也可以解决问题。
有谁知道如何使用C#提取内存堆栈,或使用C#连接到Windbg?
谢谢!
答案 0 :(得分:0)
我不知道任何C#解决方案,但PyKd(Python)可以做你想要的。虽然我主要使用PyKd作为WinDbg的插件,
它是一个Python模块,可以在任何Python脚本中使用
因此不需要WinDbg。
但是,某些命令可能与WinDbg中的命令不同,例如, dbgCommand()
将尝试运行调试器的命令,如果你在没有WinDbg的情况下工作,这可能是不可能的。
根据您的说明,您需要loadDump()
,closeDump()
,setSymbolPath()
和setCurrentProcess()
。有进程和线程的类,sp
(堆栈指针)属性可能会有所帮助。
答案 1 :(得分:0)
如果您想从头开始并在c#中使用dbgeng inerfaces,您可以尝试ecpanding我放在一起的代码
答案 2 :(得分:0)
感谢您的帮助,但我找到了一种更简单的方法来使用它... 由于Windbg可以使用cmd进行操作,因此很难找到并理解命令,但我设法使用cmd进行操作。
之后可以从C#发送cmd命令,所以我只是使用C#发送命令,并使用Windbg的-logo命令将结果写入文件。
因此,通过阅读文件,我可以解析结果并提取我想要的东西。
感谢您的帮助!