我的代码:
ProcessInfo processInfo = ...
Process proc = Process.Start(processInfo);
proc.WaitForExit();
if (proc.ExitCode != 0)
{
// ...
}
我的问题是,在未知的情况下,由于未处理的异常,进程(C++
可执行文件)有时会崩溃。
我可以告诉可执行文件崩溃了,因为在崩溃时它会返回一个负退出代码(或者说非零)。但是,我无法创建进程转储以进行调查。
如果我至少弹出了Windows“程序停止工作”消息,那么我可以手动创建转储。
当然,我可以使用像Debug Diag
这样的软件来监控可执行文件并在崩溃时进行转储,但更愿意使用更通用的内部解决方案。
答案 0 :(得分:0)
我认为这实际上取决于被调用的可执行文件输出错误。它输出到窗口或在事件查看器等中放入条目取决于相关应用程序。您应该能够阅读输出消息。
答案 1 :(得分:0)
除了stdOut之外,您是否尝试捕获stdErr输出?
例如:
Process installProcess = new Process
{
StartInfo =
{
FileName = exeName,
Arguments = args,
CreateNoWindow = true,
UseShellExecute = false,
WindowStyle = ProcessWindowStyle.Hidden,
RedirectStandardOutput = true,
RedirectStandardError = true
}
};
installProcess.Start();
string processStandardOutput = installProcess.StandardOutput.ReadToEnd();
string processStandardError = installProcess.StandardError.ReadToEnd();
// Check both strings for !IsNullOrEmpty and log something of interest
installProcess.WaitForExit();
ExitCode = installProcess.ExitCode;
// If ExitCode < 0, log the StandardError output...