Windows NT 偵錯符號安裝資訊

文章翻譯 文章翻譯
文章編號: 138258 - 檢視此文章適用的產品。
全部展開 | 全部摺疊

在此頁中

結論

本文提供如何設定 Microsoft Windows NT 符號樹,以及進階安裝程式的秘訣和訣竅詳細的資訊。

其他相關資訊

文件內容

  • 一般資訊
  • 設定自訂的符號樹
  • 單一處理器與多處理器的比較
  • 自訂 HAL.DLL
  • 在偵錯工具中使用的符號
  • 正在確認符號
  • 進階的符號驗證
  • 已檢查的版本

一般資訊

偵錯符號檔 (符號) 所需進行核心和使用者模式中 Windows NT 符號偵錯提供方法來參考全域變數,且無法載入可執行檔的名稱。

符號是由連結器所產生。它們是剔除零售產品,並且儲存在不同的 (.DBG) 檔案。這大幅地減少檔案大小會減少檔案載入時間,並因此可以增加系統效能。它也會減少安裝 floppies 數目。符號代表函式/API 名稱和全域變數。

.DBG 檔案包含每個檔案的符號的資訊。您可以在安裝 CD-ROM 中 \Support\Debug\[i386 找到 | mips] \Symbols。 它們也可以找到 NT 組建伺服器上。 這個位置是 \\Ntbuilds\Release\Usa\Build###\[x86 | mips |alpha]\Fre.srv\symbols。

符號目錄是劃分為稱為延伸子目錄 (請注意許多這些目錄中的符號檔案的使用者] 模式) 的七個子目錄:

COM-結束.COM 中的所有檔案的符號置於此
CPL 中移除-結束.CPL 中的所有檔案的符號置於此。
DLL-結束.DLL 中的所有檔案的符號置於此
DRV-結束.DRV 中的所有檔案的符號置於此
執行檔-結束.EXE 中的所有檔案的符號置於此
SCR-結束.SCR 中的所有檔案的符號置於此
SYS-結束.SYS 中的所有檔案的符號置於此。

符號必須符合的檔案版本:

從不同的建置符號提供錯誤的資訊以及傳送搜尋陰影的開發人員和浪費可觀的時間。與客戶的雙精度浮點數核取什麼建置客戶正在執行,而且如果客戶有任何修補程式安裝。 核心停止螢幕顯示核心組建的數目。

已經安裝補充程式的組建:

已經安裝補充程式的組建,例如 Service Pack 需要一組特殊的符號,是基底的組建與已經安裝補充程式的符號的組合。

設定自訂的符號樹

請記住符號必須符合客戶的電腦上安裝的檔案。您通常必須只針對特定的客戶建立一組自訂的符號。

注意: 完成的符號樹佔用超過 30 MB 的磁碟空間。
  1. 建立以儲存您的客戶符號集的子目錄。例如:

    C:\MYSYMBOLS
  2. 永遠開頭基底的 Windows NT 版本號碼。從適當的版本安裝光碟片複製下列檔案:

    XCOPY [CD 磁碟機] \SUPPORT\DEBUG\I386 C:\MYSYMBOLS /S.
  3. 透過您自訂的樹狀目錄複製適當的 Service Pack 二進位檔案的符號。可以在其標題為"符號位置"下一節中所列出的伺服器上找到 Service Pack 符號。
  4. 要複製任何協力廠商修補程式,如 Compaq SSD 符號到您的自訂符號樹狀目錄。您可能需要從廠商取得這些符號。 注意: 步驟 3 和 4 可能需要取決於已安裝客戶順序顛倒。符合客戶的步驟。
  5. 如果伺服器安裝的 Hotfix 您需要取得該 Hotfix 相符的符號。如果與 Hotfix 未提供符號檔案,需要連絡 Microsoft 產品支援服務,以詢問有這些符號。透過自訂符號樹狀目錄複製更新的符號。請確定您將它置於正確的子資料夾 (比方說系統,exe dll、 等等)。

單一處理器與多處理器的比較

Windows NT 的 SMP 系統使用特殊的核心。在安裝期間會重新命名這個核心。請務必您也重新命名 SYMBOL.DBG 檔案進行偵錯。
NTOSKRNL.EXE NTOSKRNL.DBG = 單一處理器 NTKRNLMP.EXE。NTKRNLMP.DBG = 多重處理器

  1. 如果您有多處理器系統,執行下列動作。在您的自訂符號樹狀目錄中 \SYMBOLS\EXE 下有兩個核心檔案。重新命名 NTOSKRNL.DBG 到 NTOSKRNL.UNI。
  2. 將 NTKRNLMP.DBG 複製到 NTOSKRNL.DBG。

自訂 HAL.DLL

某些硬體平台需要特殊的硬體抽象層驅動程式。像核心的檔案自訂的 HAL 會在安裝過程中重新命名。以下是常見的 HAL 的清單:

I386 電腦的 HAL 檔案:
              Uncompressed
Filename      Size (bytes) Description
-------------------------------------------------------------------------
HAL.DLL       48,416       Standard HAL for Intel systems
HAL486C.DLL   47,376       HAL for 486 c step processor
HALAPIC.DLL   63,616       Uniprocessor version of HALMPS.DLL
HALAST.DLL    46,416       HAL for AST SMP systems
HALCBUS.DLL   79,776       HAL for Cbus systems
HALMCA.DLL    45,488       HAL for MCA-based systems (PS/2 and others)
HALMPS.DLL    65,696       HAL for most Intel multiprocessor systems
HALNCR.DLL    79,392       HAL for NCR SMP machines
HALOLI.DLL    40,048       HAL for Olivetti SMP machines
HALSP.DLL     52,320       HAL for Compaq Systempro
HALWYSE7.DLL  40,848       HAL for Wyse7 systems

HAL files for DEC Alpha Computers:

              Uncompressed
Filename      Size (bytes) Description
--------------------------------------------------------------------------
HAL0JENS.DLL  56,800       Digital DECpc AXP 150 HAL
HALALCOR.DLL  69,120       Digital AlphaStation 600 Family
HALAVANT.DLL  66,752       Digital AlphaStation 200/400 Family HAL
HALEB64P.DLL  70,528       Digital AlphaPC64 HAL
HALGAMMP.DLL  72,896       Digital AlphaServer 2x00 5/xxx Family HAL
HALMIKAS.DLL  67,040       Digital AlphaServer 1000 Family Uniprocessor
HAL
HALNONME.DLL  65,376       Digital AXPpci 33 HAL
HALQS.DLL     65,088       Digital Multia MultiClient Desktop HAL
HALSABMP.DLL  72,736       Digital AlphaServer 2x00 4/xxx Family HAL

HAL files for MIPS Computers:

              Uncompressed
Filename      Size (bytes) Description
--------------------------------------------------------------------------
HALACR.DLL    43,648       ACER HAL
HALDTI.DLL    68,288       DESKStation Evolution
HALDUOMP.DLL  41,728       Microsoft-designed dual MP HAL
HALFXS.DLL    42,016       MTI with a r4000 or r4400
HALFXSPC.DLL  42,176       MTI with a r4600
HALNECMP.DLL  44,736       NEC dual MP
HALNTP.DLL    116,000      NeTpower FASTseries
HALR98MP.DLL  127,232      NEC 4 processor MP
HALSNI4X.DLL  95,520       Siemens Nixdorf UP and MP
HALTYNE.DLL   68,032       DESKstation Tyne

HAL files for PPC Computers:

              Uncompressed
Filename      Size (bytes) Description
--------------------------------------------------------------------------
HALCARO.DLL   169,504      HAL for IBM-6070
HALEAGLE.DLL  206,208      HAL for Motorola PowerStack and Big Bend
HALFIRE.DLL   136,576      Hal for Powerized_ES,
                                   Powerized_MX, and
                                   Powerized_MX MP
HALPOLO.DLL   169,152      HAL for IBM-6030
HALPPC.DLL    169,184      HAL for IBM-6015
HALWOOD.DLL   95,616       HAL for IBM-6020


如何判斷要使用哪一個 HAL:

在安裝期間建立文字記錄檔。這個檔案會告訴您有關的 HAL 原始的名稱。
  1. 前往 %systemroot%\REPAIR 子目錄。
  2. 執行 ATTRIB R-H-S SETUP.LOG 看見檔案。
  3. 帶出中 Microsoft [記事本],然後搜尋 HAL 檔案。
注意: 這個相同的技巧可以用來確認是否也會使用特殊的核心。

請移至安裝的 HAL 符號:
  1. 請移至下 \SYMBOLS\DLL 您自訂的符號樹狀目錄。
  2. 重新命名 HAL.X86 HAL.DBG。
  3. 將 [Custom HLL.DBG 複製到 HAL.DBG。

在偵錯工具中使用的符號

一個 Windows NT 偵錯工具的例如 I386KD.EXE,看起來的符號在下列位置:
_NT_ALT_SYMBOL_PATH 系統環境變數
_NT_SYMBOL_PATH 系統環境變數

這些位置會設定透過系統環境變數。它們通常會設定一個使用 SET 命令的偵錯批次檔。_NT_ALT_SYMBOL_PATH 是選擇性的。例如:
設定 _NT_SYMBOL_PATH = K:\NT35-SP3\SYMBOLS
設定 _NT_ALT_SYMBOL_PATH = c:\WINNT\SYMBOLS

注意: 所符號目錄會是正上方副檔名子目錄的目錄 (亦即如果核心符號檔 NTOSKRNL.DBG,位於 C:\DEBUG\511\I386\SYMBOLS\EXE\NTOSKRNL.DBG。_NT_SYMBOL_PATH 應設為 C:\DEBUG\511\I386\SYMBOLS

如何使用路徑:

這些不同的路徑的好用途是保留每個 Windows NT 版本的靜態符號樹狀目錄。您只需指向符號路徑的每一個版本和 Service Pack 視需要。比方說 1057年系統安裝了 SP2 您可以使用下列程式碼:
設定 _NT_ALT_SYMBOL_PATH = c:\NT351-SP2\SYMBOLS
設定 _NT_SYMBOL_PATH = K:\NT351-1057\SYMBOLS

偵錯工具會嘗試第一次使用 Service Pack 符號。[Service Pack 符號不包括基底組建符號在這裡只預存程序符號]。 如果偵錯工具未發現特定符號在預存程序樹狀目錄中查閱它 1057年符號樹狀目錄中。

搜尋順序:

上面所列的順序會搜尋各種不同的符號路徑。會使用第一個符號檔遇到的正確名稱。在範例中,上述 _NT_ALT_SYMBOL_PATH = c:\NT351-SP2\SYMBOLS 是搜尋的第一個。

環境變數的覆寫:

I386KD 支援命令列參數"-y 」 您可以在其中指定符號路徑。不過,使用這個參數會覆寫現有的環境變數。

即時變更路徑:

您可以在偵錯工具中隨時變更符號搜尋路徑,發出 「! Sympath 」 命令。例如:
! SYMPATH c:\symbols。

正在確認符號

! 重新載入:

一旦已經放大到"kd >"第一次提示您必須輸入"! 重新載入 」。 這會導致重新載入並同步處理符號資訊。如果出現錯誤訊息 PsLoadedModuleList 是 NULL!,可能會有錯誤載入的符號。要確定您有正確 HAL.DBG 和 NTOSKRNL.DBG 檔案安裝為您正在偵錯的電腦。

! 程序:

符號也藉由輸入驗證 」! PROCESS"如果您收到錯誤,"不能尋找處理序清單噴頭,"可能會有錯誤載入的符號。

KB:

如果堆疊追蹤函式名稱清單中的間距這表示你還缺少符號。遺漏函式可能也指出損毀的堆疊,但這是有點罕見。雙宣告損毀的堆疊之前,請先檢查您的符號。而且,查看回信地址在堆疊上。它們全部應該大於 8000000。

! SYMPATH:

不正確的符號可以移至另一個命令視窗、 複製正確的符號並進行修正一個! 重新載入在偵錯工具,或藉由指定正確的路徑與! SYMPATH symbol_path

進階的符號驗證

有時候客戶不知道它們已在他們的電腦安裝哪些驅動程式版本。也許是他們安裝 Hotfix NTFS,但它們並不知道哪一個 Bug 數字。您可能需要手動判斷需要哪些.DBG 檔案。

最好的方法絕對確認如果目標和 dbg 的符合項目是要檢視其核取總和值。這個值會儲存在檔案標頭內。

注意: 若要進一步了解有關作業系統檔案格式搜尋 MSDN 「 可攜式執行檔案格式"。PE 標頭包含版本號碼連結 date\time 等等。

將一般的計劃是先找出客戶檔案的核取總和,然後尋找具有相符的核取總和的 dbg 檔案。

有許多種方式可以抽取 chksum 目標,並將其 dbg。 如果您對該檔案存取您可以使用下列。本範例假設您有興趣 NTOSKRNL 檔案。

link32:

這個公用程式可以在 NT 建置子目錄中找到 \MSTOOLS:
LINK32.EXE-傾印-標頭 NTOSKRNL.EXE LINK32.EXE-傾印-標頭 NTOSKRNL.DBG

DUMPBIN:

這個公用程式可以在 Visual C bin 目錄中找到:
DUMPBIN.EXE /headers NTOSKRNL.EXE DUMPBIN.EXE /headers NTOSKRNL.DBG

如果您使用偵錯工具在一個系統或損毀傾印,您可以在記憶體中檢視檔案標頭,尋找目標檔案的加總檢查碼。
  1. ! DRIVERS-將提供您驅動程式的基底位址。
  2. dd baseaddr + d8 L1

已檢查的版本

如果安裝檢查偵錯版本的 Windows NT 檔案需要進行特殊安排它們 dbg 符號檔。某些 Hotfix 檢查組建有內建於目標檔案的符號資訊。在這些情況下剛製作的檔案複本,並命名 *.DBG。將檔案放在正常的符號子目錄也就是 \SYMBOLS\EXE。

所有公開發行的核取組建有個別 dbg 檔案就像可用版本。不過,dbg 為已核取及可用的版本是不同的。比方說 MS NT DDK 包含完整的檢查的版本的 NT。它也包含完整的符號設定為 [使用它。

注意: 已檢查的 NT 核心版本是相同的多處理器和單一處理器系統。

符號位置

零售產品:
光碟機 \support\debug\i386\symbols
\\ntx86x\freebins.xxx

屬性

文章編號: 138258 - 上次校閱: 2006年11月1日 - 版次: 2.1
這篇文章中的資訊適用於:
  • Microsoft Windows NT Advanced Server 3.1
  • Microsoft Windows NT Server 3.5
  • Microsoft Windows NT Server 3.51
  • Microsoft Windows NT Server 4.0 Standard Edition
  • Microsoft Windows NT Workstation 3.1
  • Microsoft Windows NT Workstation 3.5
  • Microsoft Windows NT Workstation 3.51
  • Microsoft Windows NT Workstation 4.0 Developer Edition
  • Microsoft Windows NT Advanced Server 3.1
關鍵字:?
kbmt kbusage KB138258 KbMtzh
機器翻譯
重要:本文是以 Microsoft 機器翻譯軟體翻譯而成,而非使用人工翻譯而成。Microsoft 同時提供使用者人工翻譯及機器翻譯兩個版本的文章,讓使用者可以依其使用語言使用知識庫中的所有文章。但是,機器翻譯的文章可能不盡完美。這些文章中也可能出現拼字、語意或文法上的錯誤,就像外國人在使用本國語言時可能發生的錯誤。Microsoft 不為內容的翻譯錯誤或客戶對該內容的使用所產生的任何錯誤或損害負責。Microsoft也同時將不斷地就機器翻譯軟體進行更新。
按一下這裡查看此文章的英文版本:138258
Microsoft及(或)其供應商不就任何在本伺服器上發表的文字資料及其相關圖表資訊的恰當性作任何承諾。所有文字資料及其相關圖表均以「現狀」供應,不負任何擔保責任。Microsoft及(或)其供應商謹此聲明,不負任何對與此資訊有關之擔保責任,包括關於適售性、適用於某一特定用途、權利或不侵權的明示或默示擔保責任。Microsoft及(或)其供應商無論如何不對因或與使用本伺服器上資訊或與資訊的實行有關而引起的契約、過失或其他侵權行為之訴訟中的特別的、間接的、衍生性的損害或任何因使用而喪失所導致的之損害、資料或利潤負任何責任。

提供意見

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com