アプリケーションで例外が発生しています。Dr.Watson を使用して、dmp とログ ファイルをキャプチャしませんでした。WinDbg は、プログラムの例外/クラッシュ時にダンプ ファイルを作成する代替手段であると言われています。グーグルで調べた後、私は混乱の山に出くわしました。まず、WinDbgでダンプファイルを作成できるか確認したい。次に、WinDbg をアプリケーションにアタッチして、クラッシュ時にダンプ ファイルを取得するための推奨される簡単なコマンド ラインはありますか? どうもありがとう!
4 に答える
このような状況では、通常、ユーザーにprocdump (zip ファイルから抽出するだけで、インストールは不要) をダウンロードすることをお勧めします。次に、次のような内容を含むバッチ ファイルを提供します。
mkdir c:\dumps
procdump -e -c 10 -w myprocess.exe c:\dumps
プロセスが未処理の例外を生成すると、c:\dumps
Visual Studio または Windbg にロードできるディレクトリにダンプ ファイルが作成されます (!analyze -v
コマンドはあなたの友達です)。
WinDbg .dump コマンドを使用できます。
.dump /mfh /u C:\crash.dmp
クラッシュ シナリオには、他の 2 つのツールが適しています。
最適なツールを選択すると、WinDbgがダンプファイルの作成に役立つだけでなく、使いやすい代替手段もいくつか提供されることが確認されます。
例外ハンドラーでクラッシュをインターセプトできる場合は、コードを使用してダンプを書き込むことができます: http://msdn.microsoft.com/en-us/library/windows/desktop/ms680360%28v=vs.85%29.aspx
それ以外の場合は、ダンプが保持する詳細レベルを指定する特定のフラグを使用して、ワトソン博士にダンプを傍受して作成するように指示する必要があります: http://blogs.technet.com/b/askperf/archive/2007/06/ 15/capturing-application-crash-dumps.aspxおよびhttp://social.technet.microsoft.com/wiki/contents/articles/8103.application-crash-dump-analysis-windows-7.aspxおよびmsdn
コマンドラインからこれを行うには、次のようにする必要があります。
cdb -pn myApp.exe -c ".symfix;.reload;.dump /ma c:\memdump\crash.dmp;qd"
これは、cdb.exe パスが検索可能であることを前提としています。
C:\Program Files (x86)\Debugging Tools for Windows (x86)\cdb -pn myApp.exe -c ".symfix;.reload;.dump /ma c:\memdump\crash.dmp;qd"
したがって、ここでのコマンド
cdb -pn -->attaches cdb to your process name myApp.exe
-c -->execute command
.symfix -->fix microsoft symbols
.reload -->reload
.dump /ma c:\memdump\crash.dmp --> write minidump to location (the flags /ma is effectively everything you want)
qd -->quit and detach
これらのコマンドの一部は不要な場合があります。不要な場合は削除できます。