我需要从转储文件中提取堆栈跟踪。我使用这样的代码来调用kd
cd C:\Program Files (x86)\Windows Kits\10\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\10\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);
答案 0 :(得分:2)
WinDbg和KD采用命令行参数-c
,您可以在其中传递命令。不要忘记在末尾包含;q
,以便调试器在完成时终止。
当您的脚本变得更长时,您可能希望将其放入文件中,并使用$<
命令之一将其作为script运行。