私のwinformアプリケーションは、起動されるとすぐにクラッシュします。この問題は、クライアントコンピューターの1つでのみ発生しています。他のすべてのクライアントで正常に動作します。ADPlusを使用してクラッシュダンプを取得することを考えていましたが、問題はADPlusをクラッシュモードで構成するために、最初に実行中のアプリケーションにデバッガーを接続する必要があることです。つまり、ADPlusを構成するときはアプリケーションが実行されている必要がありますが、アプリケーションを起動するとすぐにクラッシュするということです。ADPlusを実行する機会はありません。ADPlusをこのシナリオで使用できるかどうかについて何か考えはありますか?この場合、プロセスダンプを生成するために使用できる他のツールはありますか?
2 に答える
プログラムを起動してからデバッガーを時間内にアタッチすることはできないため、次のいずれかのアイデアを試すことができます。
- クラッシュしているマシンのデバッガーでプログラムを起動します。すでに述べたように、その目的にはProcDumpで十分です。または、VisualStudioまたはWinDBGを使用できます。
- デバッガーでプログラムを簡単に起動できない場合(たとえば、実際にWindowsサービスの場合)、を使用
gflags
して、Windowsにデバッガーでプログラムを起動させます。これにより、レジストリキーの下にプログラムファイル名のサブキーが作成されます。Image File Execution Options
- デバッガーを事後デバッガーとして設定し、プログラムがクラッシュしたときに常に起動するようにします。
クラッシュが発生した場合、デバッガーは自動的に侵入し、ダンプを自動的に作成するか、手動で作成できるようにします。
ProcDumpでさえもデバッガーを実行できない場合は、Windowsの組み込みのクラッシュダンプ機能を使用して、ダンプを自動的に作成できます。
WindowsXPおよびWindowsServer2003では、次のコマンドを実行して、ワトソン博士を事後デバッガーとして設定します。
drwtsn32 -i
このコマンドの機能とワトソン博士の使用方法に関する情報は次のとおりです。アプリケーションのクラッシュダンプのキャプチャ
Windows Vista SP1、Windows Server 2008以降では、次のレジストリキーを作成して、ダンプをローカルに保存するようにWindowsエラー報告を設定します。
HKLM\SOFTWARE\Microsoft\Windows\Windows Error Reporting\LocalDumps
このキーの下に値やサブキーを作成または設定する必要はありません。設定を変更したい場合は、ここに詳細があります:ユーザーモードダンプの収集
「.NETアプリケーションを含む、独自のカスタムクラッシュレポートを実行するアプリケーションは」WERではサポートされていないことに注意してください。アプリがWinFormsを使用しているため、これは問題です。ただし、この機能がWindows7の.NET4アプリで機能することを示す兆候がいくつかあります。
SysinternalsのProcDumpを使用して、ダンプをキャプチャできます。