プロセスに例外が発生したときにミニダンプを出力するコードがありますが、そのコードを親プロセスに移動して、一方が他方を破損しないようにしたいと考えています。
(1.)ラッパー プロセスからの子プロセスのクラッシュをリッスンし、(2.)結果としてミニダンプを書き込むにはどうすればよいでしょうか?
C++ は、ラッパー プロセスの言語として最も自然な選択肢のように思われますが、.NET も選択肢の 1 つです (私のアプリは C#/C++ が混在しています)。
プロセスに例外が発生したときにミニダンプを出力するコードがありますが、そのコードを親プロセスに移動して、一方が他方を破損しないようにしたいと考えています。
(1.)ラッパー プロセスからの子プロセスのクラッシュをリッスンし、(2.)結果としてミニダンプを書き込むにはどうすればよいでしょうか?
C++ は、ラッパー プロセスの言語として最も自然な選択肢のように思われますが、.NET も選択肢の 1 つです (私のアプリは C#/C++ が混在しています)。
私の知る限り、これを行う方法は 2 つしかありません。1 つは、デバッグ API を使用して子プロセスを "デバッグ" し、例外が発生したときにミニダンプを書き込むことです。私はこれを試したことはありませんが、Debugger API は実際にはこのように使用することを意図していないため、問題が発生する可能性があると聞いています。
もう 1 つは、事前に親プロセスと子プロセスの間の通信チャネルを設定し、未処理の例外フィルターを子プロセスに登録して、親プロセスにミニダンプを書き込むように通知することです。Firefox と Chrome はどちらも、Breakpad ライブラリを介して子プロセスの例外処理にこのメソッドを使用します。Breakpadを使用する場合は、親プロセスでCrashGenerationServerクラスを使用し、子プロセスでCrashGenerationServer への通信チャネルのもう一方の端としてパイプ名またはパイプ ハンドルを受け取るExceptionHandler コンストラクターを使用します。 .