以编程方式调用 kd(控制台 windbg)选项
Call kd (console windbg) options programmatically
我需要从转储文件中提取堆栈跟踪。我使用这样的代码来调用 kd
cd C:\Program Files (x86)\Windows Kits\Debuggers\x86\
kd -y srv*c:\symbols*http://msdl.microsoft.com/download/symbols -z C:\dmp.dmp
然后在 cmd 中手动输入:
.ecxr
然后
k
问题是:如何以编程方式调用 .ecxt、k 和其他相同的工作人员,就像这样:
var startInfo = new ProcessStartInfo
{
FileName = @"C:\Program Files (x86)\Windows Kits\Debuggers\x86\kd.exe",
UseShellExecute = true,
RedirectStandardOutput = true,
Arguments = @"-y srv*c:\symbols*http://msdl.microsoft.com/download/symbols -z C:\dmp.dmp"
};
var proc = new Process { StartInfo = startInfo };
string stdOut = string.Empty;
proc.OutputDataReceived += (whosend, args) => stdOut += args.Data;
proc.Start();
proc.BeginOutputReadLine();
proc.WaitForExit();
MessageBox.Show(stdOut);
WinDbg 和 KD 采用命令行参数 -c
,您可以在其中传递命令。不要忘记在末尾包含一个 ;q
,以便调试器在完成时终止。
当您的脚本变长时,您可能希望将其放入一个文件中,然后 运行 将其作为 script 使用 $<
命令之一。
我需要从转储文件中提取堆栈跟踪。我使用这样的代码来调用 kd
cd C:\Program Files (x86)\Windows Kits\Debuggers\x86\
kd -y srv*c:\symbols*http://msdl.microsoft.com/download/symbols -z C:\dmp.dmp
然后在 cmd 中手动输入:
.ecxr
然后
k
问题是:如何以编程方式调用 .ecxt、k 和其他相同的工作人员,就像这样:
var startInfo = new ProcessStartInfo
{
FileName = @"C:\Program Files (x86)\Windows Kits\Debuggers\x86\kd.exe",
UseShellExecute = true,
RedirectStandardOutput = true,
Arguments = @"-y srv*c:\symbols*http://msdl.microsoft.com/download/symbols -z C:\dmp.dmp"
};
var proc = new Process { StartInfo = startInfo };
string stdOut = string.Empty;
proc.OutputDataReceived += (whosend, args) => stdOut += args.Data;
proc.Start();
proc.BeginOutputReadLine();
proc.WaitForExit();
MessageBox.Show(stdOut);
WinDbg 和 KD 采用命令行参数 -c
,您可以在其中传递命令。不要忘记在末尾包含一个 ;q
,以便调试器在完成时终止。
当您的脚本变长时,您可能希望将其放入一个文件中,然后 运行 将其作为 script 使用 $<
命令之一。