XPが埋め込まれてwindbgの、ntdll.dllのシンボルが失敗し、他の記号は影響を受けますか?
-
25-09-2019 - |
質問
私は、組み込みXPとのWinDbgを使用しています。メッセージで失敗し、「シンボルファイルが見つかりませんでした。債務不履行とはntdll.dllのための輸出シンボルに」オペレーティングシステムシンボルを取得しようとしています。 (これは組み込みXP用の典型的な???)
私は問題の位置決めとロードのシンボルと私自身のコードのソースを持っていません。しかし、コードをステップ実行すること(例えばアサイン変数実際のメモリの内容に同意していないようDVで返されるコードとメモリ内の変数の場所としてシンボルファイル間の深刻な不一致があることを示唆しているが、その後、アドレスそれへのDVを主張し対応することがそのまま表示されません)。
私のsympathリストシンボルディレクトリまず、キャッシュは、サーバーので、キャッシュされたシンボルファイルは干渉すべきではありません。
NTDLLシンボルファイルを見つけ、
?正しく一致するか、または何か他のものは、それがこれを引き起こしている可能性がありますしない別のものを使用していないの潜在的影響このです例:
.sympath D:/Symbols
.symfix+
.srcpath D:/Symbols ** Yes, currently the source is in with the symbols
.reload
** (defaults to export symbols for ntdll.dll since symbol file can't be found)
bp 00401000 (break at a constructor)
g
(program runs till it hits constructor)
l+t
dv /i /t /V ** look up this pointer memory location to check constructor
** We bring up a memory window at the location the this pointer refers to and
** step through the code, but no changes appear in that memory window
** moreover a local LARGE_INTEGER whose value is set with QueryPerformanceCounter
** also appears unchanged after the call
** when the constructor returns we assign the memory address returned by
** new to a global pointer, whose memory address we look up with dt, but
** after the call that address still has 0 in it
缶誰もが私に教えて?
私たちが実際にXP Embeddedのマシン上のサーバとしてCDBを実行し、使用側の注意点としてのWinDbgのオプション「リモートセッションに接続します」。上記のコマンドは、すべてのWinDbgを介して実行されます。
解決
.reload前に!SYM騒々しいを実行するには、それはntdll.dllのためのシンボルを見つけていない理由をお知らせします。それは、彼らは単に一般的にあなたが運の出ている意味シンボルサーバー上でインデックス化していないことを完全に可能だ(実際、これは残念ながら、固定得るために連絡先に誰もありません)。
あなたの他のシンボルの問題については:
1)は、これはあなたのコードのリリースビルドですか?もしそうなら、それは完全に予想されます。
2)それはデバッグビルドである場合は、ソースは、あなたがしているが、ターゲットマシン試合を指していることを確認してください100%?あなたが答える前に、100%だ行います)。
-scott