4

アプリケーションが突然クラッシュしたときに完全なクラッシュ ダンプを取得する方法はありますか?

問題は、.net フレームワーク自体を強制終了するアンマネージ コードが原因であると思われることです。そのため、クラッシュの瞬間にアプリケーションにデバッガーが接続されていない限り、アプリケーションはクラッシュする機会すらありません。クラッシュを処理します。

クラッシュがランダムに発生し、インストールされている場所が多いため、デバッガーをアタッチして待つことができないため、デバッガーをアタッチせずにこれを行うことができるかどうか疑問に思っています。

編集: Microsoft Debugging SDK を認識しており、DebugDiag についても知りました。通常はセールの最中であり、デバッガーをアタッチしてスタック トレースを調べる時間がないため、毎回アプリケーションにアタッチする必要がないようにしたいと考えています。DebugDiag では、このためのルールを設定できるようですが、プロセスが起動するのを待つのではなく、既に実行中のプロセスでのみ機能するようです。

4

4 に答える 4

2

adplus -crashまたはuserdump.exeを使用できます。

于 2008-11-05T14:02:30.287 に答える
0

最適な方法は、レジストリを編集して、クラッシュが発生したときに適切なアプリケーションを呼び出してダンプを生成することです。したがって、あなたの場合、ワトソン博士にクラッシュ ダンプを生成してもらいます。

リンクを見る

基本的にレジストリキーを編集しますHKEY_LOCAL_MACHINE\Software\Microsoft\Windows NT\CurrentVersion\AeDebug

設定値

Value Name = Auto
Type = String (REG_SZ)
Data Value = 1 or 0. (Default is 1)
Value Name = Debugger
Type = String (REG_SZ)
Data Value = drwtsn32 -p %ld -e %ld -g

これにより、アプリがクラッシュした時点でワトソン博士が呼び出されます。詳細については、この投稿のリンクを参照してください。今後ワトソン博士を呼び出さない場合は、自動値を 0 に設定する必要があることに注意してください。

于 2012-03-23T08:31:05.967 に答える
0

debugdiag は完全にスクリプト可能です。このような問題が発生したときは、特定のプロセス名をスキャンして自動的にアタッチするようにしました。

于 2009-06-01T19:58:37.167 に答える
0

プログラムの一般的な例外ハンドラを作成します。例外ハンドラー内で、目的のパスに手動でダンプを作成するコードを記述します。

このリンクは http://brakertech.com/howto-c-generate-dump-file-on-crash/に役立ちます

于 2012-03-23T13:25:06.027 に答える