2016-08-18 49 views
1

我需要从转储文件中提取堆栈跟踪。我用这样的代码来调用KD以编程方式调用kd(控制台windbg)选项

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

手动I型:

.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); 

回答

2

WinDbg和KD采用命令行参数-c,您可以在其中传递命令。不要忘记在最后包含;q,以便调试器在完成时终止。

当您的脚本变得更长时,您可能需要将其放入一个文件并使用$<命令之一作为script运行。

+0

非常感谢! – kangarooo

相关问题