3

リリース ビルドでときどきクラッシュするアプリケーションがあります。残念ながら、サードパーティの DLL でクラッシュしているようです。それを理解しようとしている間、私は Windows がどのようにクラッシュ ダンプを作成するかについての HOW TO や説明の海を泳いでいます。

この提案されたミニダンプを使用することを考えていました:

起動時にクラッシュするプロセスのダンプを取得する

この機能をコードに残すことを計画していたので、事前に PC をセットアップしなくても、アプリケーションのダンプが常に作成されます。ところで、このアプリケーションは配布用ではありません。それは私たち自身のハードウェアとペアになるので、アプリケーションがクラッシュした場合にランダムなユーザーが自分のマシンにダンプ ファイルを構築することを心配する必要はありません。

追記: コードはすべて C/C++ です。

ワトソン博士 (drwtsn32.exe) とこのコードが生成するものに違いはありますか?

4

4 に答える 4

2

ワトソン博士では、あなたが「墜落」したことを博士が見たときにのみダンプを取得します。ダンパー API を使用すると、アプリ内の任意の場所から呼び出すことができます。例えば。ダイアログを表示する代わりに、通常のアサートをトランポリンしてダンプすることができます。私の経験では、アプリでダンプをサポートすると、さまざまな問題の調査、トラブルシューティング、および修正が容易になります。これは、適切と思われる任意の場所で完全なダンプ (またはミニダンプ) を生成できるためです。コード。

于 2010-04-22T22:13:00.577 に答える
1

注意すべき最大のことは、MiniDumpWriteDumpがメモリ割り当てとファイルI/Oを実行する必要があることです。ヒープ構造が破損している場合など、失敗したプロセス内から呼び出すと失敗する可能性があります。

ヘルパープロセスからMiniDumpWriteDumpを呼び出すことは、ダンプオプションを制御できることを除いて、ワトソン博士を使用する場合と同じように機能します。

推奨読書:MiniDumpWriteDumpのローダーロックデッドロック

于 2010-04-23T05:02:27.570 に答える
1

独自のミニダンプを作成すると、その詳細レベルをより詳細に制御できることを除いて、大きな違いはありません。デフォルトでは、ミニダンプにはスタックといくつかのローカル変数がありますが、独自のミニダンプを作成すると、完全なメモリ ダンプを作成するオプションも提供されます。大きい)。

クラッシュがかなり頻繁に発生する場合は、drwatson (または Vista 以降では werfault) が生成するミニダンプをいくつか収集するだけで十分な情報が得られる可能性があります。そうでない場合は、独自の未処理の例外フィルターを追加するオプションがあります。発生する可能性があるもう 1 つのことは、受け取ったミニダンプが、最初に発生した可能性のある例外ではなく、クラッシュのサイトであるということです。独自のミニダンプを作成すると、スタック トレースが問題の場所に近づく可能性が高くなります。

別のオプションとして、問題が頻繁に発生するマシンを使用している場合は、ADPlusをバックグラウンドで実行することもできます。ADPlus は、アプリがクラッシュするか例外をスローするまで待機し、有用なログ ファイルを生成します。アプリを変更する必要がないことを除いて、未処理の例外フィルターと同様のことを行います。

于 2010-04-22T22:05:46.840 に答える
0

私はそうは思わない。ワトソン博士はフル ダンプまたはミニ ダンプを生成しますが、代わりに ntsd デバッガーを使用して、ダンプに含まれるデータをより詳細に制御できます。

ほとんどの場合、ワトソン博士のミニダンプで十分です。コール スタックと変数が得られます。さらに必要な場合は、ntsd に多数のオプションがあります

DrWatson を使用する唯一の利点は、Windows にプリインストールされていることです。

于 2010-04-22T22:05:41.413 に答える