システム設定を変更してプロセスからミニダンプを作成できません。だから私の質問は:
システムは、クラッシュしたときにユーザープロセスのミニダンプを作成しますか
はいの場合、どの設定を構成する必要がありますか
または、プログラムでミニダンプを作成する必要がありますか。
クラッシュの調査中のミニダンプの効果
Windows XP、C++、VC6を使用しています
プログラムでミニダンプを作成する必要があります(1つの例外を除き、次のリンクを参照)。 CodeProjectには素晴らしい MiniDumpsに関する記事 があります。基本的に、_dbghelp.dll
_を使用し、関数MiniDumpWriteDump()
を使用します( MSDN on MiniDumpWriteDump を参照)。
このようなダンプの効果は、アプリケーションによって大きく異なります。最適化されたバイナリの場合、実際には役に立たないこともあります。また、経験がなければ、ヒープ/スタック破損のバグがあなたを迷わせます。
ただし、オプティマイザがそれほど難しくない場合は、ダンプdoが役立つエラーの大きなクラスがあります。つまり、スタックトレース+ローカルで使用される変数の値が便利です。つまり、多くの純粋仮想関数呼び出し(つまり、誤った破棄順序)、アクセス違反(初期化されていないアクセスまたはNULLチェックの欠落)などです。
ところで、メンテナンスポリシーでなんらかの理由で許可されている場合は、アプリケーションをVC6からVC8や9などの受け入れ可能なものに移植してください。
Firefoxでは Google Breakpad を使用していますが、少なくともVisual C++ 2003が必要です。Niceの副次的な利点は、OS XとLinuxもサポートされていることです。
WindowsではCrashRpt(コードベースとツールチェーン全体をMinGWからネイティブのMicrosoft C/C++コンパイラに移動する必要がありました)とLinuxではgoogle-breakpadを使用してしまいました。
数ドルの余裕がある場合は、 AQtrace を検討する価値があります。これには、リモートエンドユーザーマシンで実行中にデバッガー内で発生するクラッシュの多くの利点があります。