C# 通过C执行WinDbg命令#

C# 通过C执行WinDbg命令#,c#,windbg,C#,Windbg,我需要通过C#执行WinDbg命令。更清楚地说,在后台通过C#打开WinDbg,在WinDbg命令行中执行命令并关闭WinDbg应用程序。C#是否提供了实现此目的的API 否,C#没有运行或控制WinDbg的API 您可以使用general purpose启动WinDbg并将脚本传递给它。您可以从WinDbg命令行执行C#代码,一种方法是为WinDbg编写插件。不确定这是否是您所追求的方法,但如果是,这里有一个方法。请参阅: 它不是C#,但它是>net,也许你会找到一种方法 如果您准备将С#更

我需要通过C#执行WinDbg命令。更清楚地说,在后台通过C#打开WinDbg,在WinDbg命令行中执行命令并关闭WinDbg应用程序。C#是否提供了实现此目的的API

否,C#没有运行或控制WinDbg的API

您可以使用general purpose启动WinDbg并将脚本传递给它。

您可以从WinDbg命令行执行C#代码,一种方法是为WinDbg编写插件。不确定这是否是您所追求的方法,但如果是,这里有一个方法。

请参阅:
它不是C#,但它是>net,也许你会找到一种方法

如果您准备将С#更改为python,请参阅


最后,您可以从托管代码中使用本机DLL DbgEng/DbgHlp

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

windbg.exe -pn calc.exe -c "kb"
这将使Windbg打开并连接到计算器,显示运行
kb
的结果

如果您不需要Windbg GUI,只需要执行一个命令来获得它的输出,请使用(相当于命令行调试器)

因此,在这里,
-c
后面引号中的命令是在附加到名为(由于
-pn
)“calc.exe”的进程后执行的

在任何一种情况下,如果您使用的是进程ID(PID),请使用
-p

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

至于从C#运行它,最简单的方法是启动a并读取控制台输出。有关现成的解决方案,请参阅。

除非围绕c++/cli签出mdbglib,否则无法使用Naitive调试器引擎
这是一个以这种方式编写的调试器

到目前为止,您发现了什么?您是否试图针对自己的进程或其他进程在windbg中执行某些操作?我正在使用windbg创建自定义命令。另外,我需要在单击使用C#创建的GUI中的按钮时执行WinDbg命令行并执行这些命令,请更具体一些。这是一个实时调试问题还是一个转储分析问题。如果是实时调试:向WinDbg发送命令的C#应用程序是否也是您要调试的应用程序(即C#应用程序调试本身)?这个问题听起来像是XY问题。请更详细地描述你真正想要实现的目标。这真的是启动WinDbg的唯一方法吗?或者以不同的方式获得相同的结果可以吗?我正在进行实时调试,C#需要将要执行的命令发送到WinDbg并获取执行的命令的输出。从WinDbg调用C#,我可以编写DLL WinDbg扩展,但我的要求是从C应用程序执行WinDbg命令。我不能利用已经编写的DLL扩展,并在C#中导入该DLL吗?如何将脚本传递给它?你的意思是什么?或或者其他什么?在您提供的上一个解决方案中,即创建一个流程是可以的,但是关于如何将要执行的命令作为输入提供给WinDbgYeah的任何想法都是很好的答案,这似乎是可行的,但是没有创建流程的任何其他方法??如果没有创建流程,您将如何启动流程?创建您不想做的流程是什么?是的,如果不启动流程,我显然不能!!但是我不想使用WinDbg以外的其他调试器。有没有想过从托管代码中使用本机DLL DbgEng/DbgHlp??
cdb.exe -p 1164 -c "kb; qd"