当我的进程有异常时,我有output a minidump的代码,但是我想将该代码移动到父进程,以便不会破坏另一个进程。
如何从(1。)监听包装器进程中的子进程崩溃,(2。)写一个minidump作为结果?< / p>
C ++似乎是包装器进程最自然的语言选择,但.NET也是我的选择(我的应用程序是混合C#/ C ++)。
答案 0 :(得分:1)
据我所知,只有两种方法可以做到这一点。一种方法是使用Debugging API来“调试”子进程,并在遇到异常时编写一个minidump。我从来没有尝试过这个,但我听说它可能会导致问题,因为调试器API并不是真的可以这样使用。
另一种方法是提前在父进程和子进程之间建立通信通道,然后在子进程中注册一个未处理的异常过滤器,该过滤器通知父进程编写一个minidump。 Firefox和Chrome都使用此方法通过Breakpad库对其子进程进行异常处理。如果您想使用Breakpad,那么您将在父进程中使用CrashGenerationServer类,并在子进程中使用管道名称或管道句柄作为另一端的ExceptionHandler constructor CrashGenerationServer的通信通道。