通过C#执行WinDbg命令

时间:2014-10-14 06:24:43

标签: c# windbg

我需要通过C#执行WinDbg命令。为了更清楚,在后台通过C#打开WinDbg,在windbg命令行中执行命令并关闭windbg应用程序。 C#是否提供了执行此操作的API?

5 个答案:

答案 0 :(得分:3)

如果您真的想要GUI,只需使用-c开关将命令传递给窗口即可。附加到Calculator并转储堆栈的示例命令行:

windbg.exe -pn calc.exe -c "kb"

这会打开Windbg并附加到计算器,显示运行kb的结果。

如果您不需要Windbg GUI并且只需要执行命令来获取它的输出,请使用CDB(等效于命令行调试器)。

cdb.exe -pn calc.exe -c "kb; qd"

所以在这里,-c之后的引号中的命令在附加到名为(由于-pn)" calc.exe"的进程后执行。

在任何一种情况下,如果你改为拥有进程ID(PID),请使用-p

cdb.exe -p 1164 -c "kb; qd"

至于从C#运行它,最简单的方法是启动Process并读取控制台输出。有关即用型解决方案,请参阅this answer

答案 1 :(得分:0)

不,C#没有API来运行或控制WinDbg。

您可以使用通用Process.Start启动WinDbg并将脚本传递给它。

答案 2 :(得分:0)

您可以从Windbg命令行执行C#代码,一种方法是为Windbg编写一个插件。不确定这是您之后的方法,但如果是这样的话post该怎么办。

答案 3 :(得分:0)

请参阅: https://powerdbg.codeplex.com/
它不是C#,但它是> net,你可能会发现一种方法

如果您准备将С#更改为python,请参阅 https://pykd.codeplex.com

最后,您可以使用托管代码中的原生db DbgEng / DbgHlp

答案 4 :(得分:0)

除非你将它包装在c ++ / cli checkout mdb glib https://mdbglib.codeplex.com之外,否则不能使用本机调试器引擎 这是一个编写如此时尚的调试器