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