繁体   English   中英

识别由C#Process.Start()运行的可执行文件崩溃

[英]Identify crash of executable run by C# Process.Start()

我的代码:

ProcessInfo processInfo = ...
Process proc = Process.Start(processInfo);
proc.WaitForExit();
if (proc.ExitCode != 0)
{
   // ...
}

我的问题是在未知情况下,由于未处理的异常,进程( C++可执行文件)有时会崩溃。

我可以说可执行文件崩溃了,因为崩溃时它返回一个负的退出代码(或非零)。 但是,我无法创建进程转储进行调查。

如果至少弹出Windows的“程序停止工作”消息,则可以手动创建转储。

当然,我可以使用Debug Diag类的软件来监视可执行文件并在崩溃时进行转储,但宁愿拥有更通用的内部解决方案。

我认为这取决于可执行文件被输出以输出错误。 它是否输出到窗口或在事件查看器中放置条目等取决于所讨论的应用程序。 您应该能够阅读输出消息。

您是否已尝试捕获除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...

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM