2009-10-10 17 views
26

システム設定を変更して自分のプロセスからミニダンプを作成できません。だから私の質問は です:それは私がプロセスがクラッシュしたときにミニダンプを作成する方法は?

  • を設定する必要がありますか私は持っているん設定

    YESの場合に、クラッシュしたとき

    • は、システムがユーザ・プロセスのためのミニダンプを作成します。プログラムでミニダンプを作成します。クラッシュ

    を調査しながら、

  • どのように効果的なのは、ミニダンプある私は(1つの例外を除いて、次のリンクを参照)は、Windows XP、C++、VC6あなたがプログラム的にミニダンプを作成する必要が

  • +0

    いつでもtry-catchとfstreamを組み合わせて、独自のミニダンプを作成できます。 –

    答えて

    25

    を使用しています。 CodeProjectは素敵なarticle on MiniDumpsを持っています。基本的には、dbghelp.dllを使用し、機能MiniDumpWriteDump()MSDN on MiniDumpWriteDumpを参照)を使用します。

    このようなダンプの効果は、アプリケーションによって大きく異なります。時々、最適化されたバイナリのために、それらは事実上役に立たない。また、経験がなければ、ヒープ/スタックの破損のバグはあなたを迷わせるでしょう。

    オプティマイザがあなたにあまりにもハードではなかった場合は、ダンプ助け、ローカルで使用される変数のスタック・トレース+の値を持つことが有益である、すなわちすべてのバグを行い、エラーの大きなクラスがあります(例えば、間違った破棄命令)、アクセス違反(アクセスされていないアクセスされた、またはNULLチェックが見つからない)などが含まれます。 VC8や9のような受け入れられるもの。あなたは自分自身に大きな好意を持っています。

    1

    スペアAQtraceのスペアをいくつか持っていれば見てみる価値があります。これには、リモートエンドユーザマシン上で実行している間に、デバッガ内部で発生するクラッシュの多くの利点があります。

    14

    gimpfさんに特別なお返事をいただきありがとうございました。インターネットとmsdnでグーグルグーグルを務めました。

    私はこれが読みする価値があるdebugInfo.comに優れた記事を見つけた:

    私たちは、Firefoxで Google Breakpadを使用

    effective minidumps

    +0

    あなたが意味するか:グーグル? –

    +0

    @MatthewRohはい、修正済み – Satbir

    3

    、それは少なくとものVisual C++ 2003が必要ですが、素敵な副次的な利点がありますOS XとLinuxもサポートしています。

    2

    WindowsでCrashRptを使用しました(コードベース全体とツールチェーンをMinGWからネイティブのMicrosoft C/C++コンパイラに移動する必要がありました)、そしてLinux上でgoogle-breakpadを使用しました。

    関連する問題