使用 Microsoft 登入
登入或建立帳戶。
您好:
選取其他帳戶。
您有多個帳戶
選擇您要用來登入的帳戶。

支援的 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 網站:

需要更多協助嗎?

想要其他選項嗎?

探索訂閱權益、瀏覽訓練課程、瞭解如何保護您的裝置等等。

社群可協助您詢問並回答問題、提供意見反應,以及聆聽來自具有豐富知識的專家意見。

這項資訊有幫助嗎?

您對語言品質的滿意度如何?
以下何者是您會在意的事項?
按下 [提交] 後,您的意見反應將用來改善 Microsoft 產品與服務。 您的 IT 管理員將能夠收集這些資料。 隱私權聲明。

感謝您的意見反應!

×