如何確認 Windows 偵錯符號

支援的 Windows Vista Service Pack 1 (SP1) 結束 2011 年 7 月 12 上。若要繼續接收 Windows 安全性更新,請確定您正在執行 Windows Vista Service Pack 2 (SP2)。如需詳細資訊,請參閱此 Microsoft 網頁:。

摘要

啟動核心偵錯工具之後,必須驗證 Windows 偵錯符號 (I386kd.exe |Windbg.exe)。 偵錯工具可能會載入並呈現提示字元中,但如果符號不正確的未來的偵錯命令不會參考適當的函式和變數,這樣會導致時斷時續的結果。下面列出幾個紅色旗標和數個特別色的核取符號有效性的方法。

其他相關資訊

本文假設核心偵錯工具正在執行和已載入 Memory.dmp 檔案,或連線到遠端電腦。所呈現的指令不完整文件,並顯示節錄輸出。

本文內容

  • 載入核心偵錯工具

  • 檢查建立時間與 ! 驅動程式

  • 使用 Link.exe 來檢查建立時間

  • Unassembling 函式

  • Service Pack 符號

載入核心偵錯工具

一般負載的核心偵錯工具會顯示下列提示其中一項:

kd > 單一處理器系統 0: kd > 多處理器系統下面顯示的提示,表示符號檔的 Ntoskrnl.exe 檔案不正確。請檢查並確定 HAL 與適當的多處理器或單一處理器核心,會複製到 [符號] 樹狀目錄。 範例:Symbol search path is: C:\symbolskd: crash dump initialized [c:\dump\memory.dmp]could not determine the current processor, using zeroKernel Version 1057 Free loaded @ 0x80100000Bugcheck 0000001e : c0000005 80151d5b 00000000 00000001*** Contents Deleted ***16kd> 當核心偵錯工具載入核心版本,以及處理器計數的 Memory.dmp 檔案時,會顯示的前幾行。請確認與適當的核心和 HAL 都有相對應的處理器計數。不論是哪一符號會載入,或延後會顯示驅動程式的符號資訊。 範例載入:Symbol search path is: C:\symbolskd: crash dump initialized [c:\dump\memory.dmp]Kernel Version 1057 Free loaded @ 0x80100000Bugcheck 0000001e : c0000005 80151d5b 00000000 00000001re-loading all kernel symbolsKD: unloading symbols for "ntoskrnl.exe"KD: deferring symbol load for "ntoskrnl.exe" at 80100000KD: Loaded (2248) fpo entries for image (ntoskrnl.exe)KD: "ntoskrnl.exe" loaded 4074 symbols (80100000-801bbb80)KD: loaded symbols for "ntoskrnl.exe"KD: deferring symbol load for "atapi.sys" at fc810000KD: deferring symbol load for "diskdump.sys" at fc800000KD: deferring symbol load for "hal.dll" at 80400000KD: deferring symbol load for "atapi.sys" at 80010000KD: deferring symbol load for "SCSIPORT.SYS" at 80013000KD: deferring symbol load for "Atdisk.sys" at 80001000KD: deferring symbol load for "Scsidisk.sys" at 8001b000KD: deferring symbol load for "Fastfat.sys" at 80372000Unable to read image header for Floppy.SYS at fc820000 - status c0000001*** Contents Deleted ***KD: deferring symbol load for "srv.sys" at fc9e0000KD: deferring symbol load for "ntdll.dll" at 77f80000finished re-loading all kernel symbolsNT!_PspUnhandledExceptionInSystemThread+0x18:80131ff8 b801000000 mov eax,0x1kd> 請注意,核心偵錯工具就會是 「 無法讀取的 Floppy.sys 的映像標頭,在 fc820000-c0000001 狀態 」。因為特定驅動程式標頭不在記憶體中,這個訊息是正常的。

檢查建立時間與 ! 驅動程式

使用! 驅動程式命令,以列出的驅動程式目前載入記憶體中。請記下的 [日期和時間的驅動程式,而且,它們可能是載入。(程式碼大小] 和 [資料大小的欄,在下列範例會移除發行項的寬度)。kd> !driversBase Code Size Data Size Driver Name Creation Time80100000 Ntoskrnl.exe Fri May 26 18:18:36 199580400000 Hal.dll Thu May 11 13:54:18 199580010000 Atapi.sys Tue May 23 21:01:41 199580013000 Scsiport.sys Fri May 05 23:11:06 199580001000 Atdisk.sys Fri May 05 23:10:40 19958001b000 Scsidisk.sys Fri May 05 23:11:01 199580372000 Fastfat.sys Mon May 22 23:57:13 1995fc820000 Floppy.sys Header Paged Outfc830000 Scsicdrm.sys Wed May 10 21:57:03 1995fc840000 Fs_Rec.sys Header Paged Outfc850000 Null.sys Header Paged Outfc860000 Beep.sys Header Paged Outfc870000 I8042prt.sys Fri May 05 23:10:42 1995fc880000 Mouclass.sys Fri May 05 23:10:45 1995fc890000 Kbdclass.sys Fri May 05 23:10:44 1995fc8b0000 Videoprt.sys Fri May 05 23:10:05 1995fc8a0000 S3.sys Fri May 19 21:18:06 1995fc8c0000 Vga.sys Fri May 05 23:10:10 1995fc8d0000 Msfs.sys Fri May 05 23:11:57 1995fc8e0000 Npfs.sys Fri May 05 23:11:40 1995fc900000 Ndis.sys Mon May 22 20:23:18 1995fc8f0000 El59x.sys Fri Feb 10 16:18:09 1995fc940000 Tdi.sys Fri May 05 23:13:09 1995fc920000 Nbf.sys Mon May 08 15:00:47 1995fc950000 Netbios.sys Fri May 05 23:13:19 1995fc960000 Parport.sys Header Paged Outfc970000 Parallel.sys Header Paged Outfc980000 Serial.sys Fri May 05 23:11:20 1995fc990000 Afd.sys Header Paged Outfc9a0000 Rdr.sys Wed May 17 17:18:16 1995fc9e0000 Srv.sys Wed May 24 21:56:59 1995TOTAL: 1ab460 (1709 kb) 3b7c0 ( 237 kb) ( 0 kb 0 kb)kd> 請注意建立時間的檔案,也就是編譯檔案的日期。檢視使用 [檔案管理員的 [Winnt\System32\Drivers] 子資料夾時,此日期會非常接近實際的檔案上的 Date\Time 戳記。 如果您訂閱 Microsoft 開發人員網路 (MSDN),或是有 Windows 裝置驅動程式套件 (DDK),Link.exe 工具可用來確認 Dbg 檔案是相同的檔案時所編譯的驅動程式所建立。"時間日期戳記 」 在下面範例符合上述輸出中的 「 建立時間 」 的 Netbios.sys。 若要檢查的 「 時間日期戳記"Dbg 檔案使用 Link.exe:

連結-傾印的標頭 \symbols\sys\netbios.dbgMicrosoft (R) (coff) 二進位檔案傾印工具版本 3.00.5270 著作權 (C) Microsoft Corp 1992 1995年。所有,並保留一切權利。 傾印檔案 Netbios.dbg

4944 的簽章 0 旗標 14 C 機器 (i386) 306 特性2FAAE94F 時間日期戳記星期五月 05 日 23:13:19 1995年

8D0B 總和檢查碼映像的映像 70A0 大小的影像基底的 10000 的* * 內容刪除 * * 如果! 驅動程式命令會產生如下所示的程式行、 重要的資料表,在傾印已損毀。進一步的分析傾印不可能。

無法讀取 DosHeader 0583002a-狀態 00000000 在無法讀取 DosHeader 0587002a-狀態 00000000 在無法讀取 DosHeader 0588002a-狀態 00000000 在無法讀取 DosHeader 058a002a-狀態 00000000 在無法讀取 DosHeader 在 058c002a-狀態00000000

Unassembling 函式

符號檔啟用核心偵錯工具依名稱參考函式和全域變數。特別檢查幾個內的函式,以確定它們看起來適當。許多函式是編譯器最佳化,並不一定符合下列範例。編譯器最佳化的函式是以函式名稱的括號中 FPO 識別的。 函式通常開頭的其中一個 「 推入 ebp"或"mov eax,[000000000] fs。"基本知識機器語言和經驗將能辨識這些函式。

  • 列出載入的模組 x * !

  • 列出特定模組 (例如,Ntoskrnl.exe) 的符號。x nt ! *

  • 選取 [反組譯碼也就是編譯器最佳化的函式。u NT ! _NtUnlockFile

良好的符號

kd> u NT!_NtUnlockFileu NT!_NtUnlockFileNT!_NtUnlockFile:80156bd8 64a100000000     mov     eax,fs:[00000000]80156bde 55               push    ebp80156bdf 8bec             mov     ebp,esp80156be1 6aff             push    0xff80156be3 68200d1080       push    0x80100d2080156be8 68304f1380       push    0x80134f3080156bed 50               push    eax80156bee 64892500000000   mov     fs:[00000000],espkd> 

函式的 unassembly 看起來應該類似上述; 文字不過,unassembly,就有可能變更。如果 unassembly 看起來是正確的您可以假設符號都正確載入,這個模組。 下列 unassembly 開頭為"jnz NT ! _NTUnlockFile + 0x22。"很明顯地,函式開頭就不會啟動跳躍指令碼。再次檢查 [符號] 樹狀目錄。

不正確的符號

kd> u NT!_NTUnlockFileu NT!_NTUnlockFileNT!_NtUnlockFile:801574a4 7520             jnz     NT!_NtUnlockFile+0x22 (801574c6)801574a6 6a00             push    0x0801574a8 8d45dc           lea     eax,[ebp-0x24]801574ab 50               push    eax801574ac 53               push    ebx801574ad ff356c361480     push    dword ptr [NT!_CcNoDelay+0x4 (8014366c)]801574b3 6a01             push    0x1801574b5 ff7508           push    dword ptr [ebp+0x8] 

Service Pack 符號

有的時間時很難符合特定的安裝與符號。在某個時點,服務已經可以加入需要將檔案從 Windows 安裝光碟片,覆寫與 service pack 已更新的檔案複製。請務必在變更系統設定],從 Windows 安裝光碟複製檔案之後,重新套用 service pack 以及所有的協力廠商支援磁片。符號應該安裝為相同的順序套用。

其他資訊

若要尋找核心偵錯 How To 系列文件,搜尋關鍵字: debugref。Windbg 2.0.x 符號技術在偵錯工具版本 2.0.x 和 Microsoft 偵錯工具有可用的其他符號驗證步驟的較大者。如需詳細資訊,請參閱至下列 Microsoft 網站:

Need more help?

Expand your skills
Explore Training
Get new features first
Join Microsoft Insiders

Was this information helpful?

Thank you for your feedback!

Thank you for your feedback! It sounds like it might be helpful to connect you to one of our Office support agents.

×