まず、適切なシンボルを構成する必要があります。シンボルを使用すると、メモリ アドレスを関数名に一致させることができます。これを行うには、シンボルのローカル キャッシュを格納するローカル フォルダーをマシンに作成する必要があります (例: C:\symbols)。次に、シンボル サーバー パスを指定する必要があります。これを行うには、[ファイル] > [シンボル ファイルのパス] に移動して、次のように入力します。
SRV*c:\symbols*http://msdl.microsoft.com/download/symbols
シンボルを正しく構成する方法の詳細については、こちらを参照してください。
Symbols サーバーを適切に構成したら、[ファイル] > [クラッシュ ダンプを開く] からミニダンプを開くことができます。
ミニダンプを開くと、コマンド ラインの左側に、ダンプが生成されたときに実行されていたスレッドが表示されます。このスレッドが何を実行していたかを確認するには、次のように入力します。
kpn 200
最初に必要なパブリック Microsoft 関連シンボルをダウンロードする必要があるため、最初に実行するときは時間がかかる場合があります。すべてのシンボルがダウンロードされると、次のようになります。
01 MODULE!CLASS.FUNCTIONNAME1(...)
02 MODULE!CLASS.FUNCTIONNAME2(...)
03 MODULE!CLASS.FUNCTIONNAME3(...)
04 MODULE!CLASS.FUNCTIONNAME4(...)
どこ:
- THE FIRST NUMBER : フレーム番号を示します
- MODULE : コードを含む DLL
- CLASS : (C++ コードのみ) コードを含むクラスを表示します
- FUNCTIONAME : 呼び出されたメソッド。正しいシンボルがある場合は、パラメーターも表示されます。
次のようなものも表示される場合があります
01 MODULE!+989823
これは、この DLL に適切なシンボルがないため、メソッド オフセットしか表示されないことを示しています。
では、コールスタックとは何ですか?
次のコードがあるとします。
void main()
{
method1();
}
void method1()
{
method2();
}
int method2()
{
return 20/0;
}
このコードでは、method2 は基本的に例外をスローします。これは、0 で除算しようとしており、これによりプロセスがクラッシュするためです。これが発生したときにミニダンプを取得した場合、次のコールスタックが表示されます。
01 MYDLL!method2()
02 MYDLL!method1()
03 MYDLL!main()
このコールスタックから、「main」が「method1」を呼び出し、次に「method2」を呼び出して失敗したことをたどることができます。
あなたの場合、このコールスタックがあります(これは「kb」コマンドを実行した結果だと思います)
b69dd8f0 bfa1e255 016d2fc0 89efc000 00000040 nv4_disp+0x48b94
b69dd8f4 016d2fc0 89efc000 00000040 00000006 nv4_disp+0x49255
b69dd8f8 89efc000 00000040 00000006 bfa1dcc0 0x16d2fc0
b69dd8fc 00000000 00000006 bfa1dcc0 e1e71018 0x89efc000
最初の列は子フレーム ポインターを示し、2 番目の列は実行中のメソッドのリターン アドレスを示し、次の 3 つの列はメソッドに渡された最初の 3 つのパラメーターを示し、最後の部分は DLL 名 (nv4_disp) です。実行中のメソッドのオフセット (+0x48b94)。シンボルがないため、メソッド名を確認できません。NVIDIA がシンボルへのパブリック アクセスを提供しているとは思えないので、ここから多くの情報を取得できないと思います。
「kpn 200」を実行することをお勧めします。これにより、完全なコールスタックが表示され、このクラッシュの原因となったメソッドの起源を確認できる場合があります (それが Microsoft DLL である場合は、私が提供した手順に適切なシンボルが含まれているはずです)。
少なくとも NVIDIA のバグに関連していることはわかっています ;-) このドライバーの DLL を最新バージョンにアップグレードしてみてください。
WinDBG のデバッグについて詳しく知りたい場合は、次のリンクをお勧めします。