私は最近、故意にクラッシュを作成し、研究の異常下の例のプログラムを書きました。そして、解析DMPファイル。
!あなたが次のエラーを報告するために、メモリのプロセスで現在の状況を観察したいとき、私はアドレス-summaryコマンドを実行します。
0:000>アドレス-summary!
NTDLLなしシンボル。続行できません。
次のようにモジュールのシンボルファイルの明確な証拠があるので、ノーモジュールntdll.dllのシンボルではなく、ああ、というこの手段は、ロードとマッチされています:
1、例えば、我々は、スレッドスタックから裏付けすることができます
!05 00affa24 7799662d 008e7000 808b6aa4 00000000 kernel32のBaseThreadInitThunk + 0x19(FPO:[非Fpoの])
06 00affa80 779965fd 779b51e4 00000000 NTDLL __ RtlUserThreadStart + 0x2F FFFFFFFF(FPO:[SEH])!
07 00affa90 00000000 00da1091 008e7000 00000000 !NTDLL _RtlUserThreadStart +として0x1B( FPO:[非Fpoの])
のみ対応するシンボルファイルがロードされ、正しい関数名ことを確認します。
2、実行!Chksym NTDLL
0 :! 000> chksym NTDLL
ntdll.dllの
タイムスタンプ:6071CF9D
SizeOfImage:19C000
PDB:wntdll.pdb
PDB SIG:F9EA7A7F-4120-6C21-D2ED-4E99993A9EF4
年齢:1
\ debug_symbol \ symbols32 \ wntdll.pdb \:ロードされたPDBがF F9EA7A7F41206C21D2ED4E99993A9EF41 \ wntdll.pdb
wntdll.pdb
PDB SIG:F9EA7A7F-4120-6C21-D2ED-4E99993A9EF4
年齢:1
MATCH:wntdll.pdbとntdll.dllの
ではないだけがロードされていることを教えすることは非常に明確で、この命令、および一致しました
しかし、なぜ「報告する続行。缶のNTDLLのためのシンボルはありません。」
インターネットを検索した情報の多くは助けが、その後の記事で見ていない。著者は、他の問題の兆候が発生し、彼はcとシンボルファイルのパスを設定することwindbgのシステムモジュールを締結:\記号を解決するために彼が直面している問題。
私は次のように私は私のパスが変更に署名しますので、これを試してみてかもしれないと思います。
その後、結果は本当に,!住所-summary適切に実行されたコマンドと出力することができます。\記号それ:パスは本当にCにしたい、実際には問題であるので、それは、本当ですか?
私の個人的な経験に基づいて、私はこの結論を信じていません。私はの手順を確認しました:
1は、私は私の元のディレクトリが2である、それはその後、このような理由ではありませんことに気づいた、私は私の元のディレクトリFを持っています:\ Debug_Symbol \ Symbols32がFに調整:\ Symbols32は、同じコマンドを実行し、結果は同じ新聞でありますエラー。
2、C今を削除:\シンボルディレクトリに移動し、私はシンボルディレクトリcをテストする必要がありました:ドライブを、シンボルの名前を変更しました。そして、コマンドアドレス-summaryを実行し、私は奇跡を待っています、結果は!:
0:000>アドレス-summary!
NTDLLなしシンボル。続行できません。
それから私無知な力が、少なくとも我々はそのCを締結:\シンボルディレクトリ私は私の問題を解決しました。\デバッグ時Debug_Symbol \ Symbols32は、空である、:そして、私はFを言うことです別のディレクトリに移動して、第二に結果を投げる、私はパスセットwindbgのシンボルを変更することを忘れトスしていきますが、ディレクトリの関連するシンボルシンボルファイルntdll.dllのモジュールは、問題の原因は、ディレクトリとは、シンボル自体を見るために依頼することをされていないことは、Microsoftシンボルサーバーの新しいシンボルファイルから取ることです。
二つのシンボルファイルによって観察:
オリジナルのシンボルファイル
これは、新しいシンボルファイルであり、それは問題ありません
あなたは同じですが、ファイルのサンプルサイズ、対応するバージョンが同じではないことをどの手段、NTDLLの私のシステムを持つ古いシンボルファイルは実際には一致しないこれら二つの文書をGUID、見ることができます。しかし、GUIDが同じで、なぜそれに合わせて、正しいバージョンではありません。Womengbile。
しかし、我々はいくつかの経験を描くことができます。
- windbgのは、あなたがシンボルファイルに一致するよう指示が、それは必ずしもではありません
- 、その後、同じように操作を行う、いわゆるマッチングシンボルの出会いと同じ問題が発生した後、我々は新しいwindbgのダウンロードシンボルファイルが解決することができることを、元のファイルを削除しようとすることができます
:実際には、このような状況は、次のような他の命令を実行することができない、につながります
- !TEB
0:!000> TEB
008ea000でTEB
エラーInitTypeRead(TEB)... - !ヒープ
0:!000>ヒープ
無効な型情報
他の人が、私が答えるために助けを、この記事を参照したいと思いながら、私は、フォローアップするために、問題の調査を続行します。