質問: Windowsアプリが不正な処理で異常終了するとき、 > > MyApplication は動作を停止しました > > 問題が発生したため、プログラムが正しく動作しなくなりました。プログラムは閉じられ、解決策がある場合はWindowsから通知されます。 > > > というメッセージが表示されます。 通常は、このタイミングで、Windowsタスクマネージャーを開き、当該プロセスを右クリックして、ダンプファイルの作成を実行することで、ダンプファイルを保存することができます。 このような人手による操作ではなく、プログラムによって、ダンプファイルを自動保存する方法はないでしょうか? 私のアプリは、ランチャ.exeとメイン.exeに分かれていて、ランチャ.exeが DEBUG_ONLY_THIS_PROCESS フラグ付きで、 CreateProcessを呼び、メイン.exeをデバッグ対象の子プロセスとして起動するようになっています。 異常終了が発生したとき、EXCEPTION_DEBUG_EVENTを捕まえることはできるのですが、このタイミングで、ダンプファイルを任意の場所に自動保存したいと思います。 * ダンプファイルのファイル構造は公開されているか? * ダンプファイルを作成するAPIは存在するか? 以上、ご存じでしたらご教示ください。
回答: MiniDumpWriteDump().aspx) APIで任意タイミングでダンプファイルを作成することができます。ランチャープロセスでダンプ作成されるとのことなので条件はクリアされていますが > > `MiniDumpWriteDump` should be called from a separate process if at all possible, rather than from within the target process being dumped. This is especially true when the target process is already not stable. > > > と問題のプロセス自身ではなく、外部プロセスから呼び出すことが推奨されています。 それとは別にWER; Windows Error Reportingの設定.aspx)を行うことで自動的にダンプファイルを保存することができます。