使用 WDEB386 的秘訣

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

在此頁中

結論

WDEB386 偵錯工具提供 Windows 軟體開發套件 (SDK) 中有許多有用的功能 ; 不過,它也有一些缺點。本文將告訴您一些事情 WDEB386 可以和無法執行,並提供幾個使用秘訣。

其他相關資訊

使用 WDEB386 理由

WDEB386 偵錯工具已原來撰寫為 Microsoft 內部工具來開發和偵錯 Windows 增強的模式一層。像這類它會保留許多進階的功能所需偵錯一個的多工受保護的模式的系統。在同一時間這個偵錯環境低階性質可以是不易和混淆在許多情況下。不過,有很多情況下,其中這個偵錯工具是特別有用或甚至完全需要,診斷問題如下所示:

  • 透過將不會追蹤 CVW 的低階程式碼追蹤
  • 檢視虛擬/線性/實體記憶體
  • 檢視進階如 [GDT 386 處理器資料 LDT、 IDT,及其中所有 [PMODE 註冊
  • 追蹤硬體插斷處理常式
  • 追蹤終止和-保持-常駐 (TSR) 程式或 MS-DOS 裝置驅動程式
  • 顯示虛擬機器 (VM) 狀態
  • 監視所有插斷及增強模式中的例外狀況
  • 開發和偵錯的增強模式的虛擬裝置 (VxD)
這並不詳盡清單,但是,它應該做說明一些地方通常可能用 WDEB386 偵錯工具的情況。

分解成在啟動偵錯工具

第 9 章 < Microsoft Windows 軟體開發套件工具 > 手冊的尚未提及的一個命令列選項是/B 選項。在 WDEB386 命令列上指定/B 指示偵錯工具暫止在 Windows 啟動時執行。此選項並不保證偵錯工具會暫止執行上非常第一個執行的指令。在實際上偵錯工具並不停止執行直到 Windows 已載入 VxD,只之前為了初始化之後。

在一般分解成偵錯工具

執行 WDEB386 時可以停止執行目前的指令資料流,使用 CTRL + ALT + SYS RQ 按鍵組合。這不會停止執行鍵盤插斷的精確位置 ; 執行會停止在虛擬機器管理員 (VMM) 中的位置。可以使用.VM] 指令 (如下所示),檢查中斷的虛擬機器的暫存器內容。

或者,與 BP] 命令或插斷指示直接進入程式碼組合,可以設定中斷點。可以使用一個 INT 1] 或 [INT 3 指令。不同之處在於 INT 1 將會產生 「 發生未預期的追蹤插斷 」 訊息,並停止指令之後 [INT 1 上。此訊息並不表示錯誤狀況,且可以被忽略。INT 3 將直接在 [INT 中斷,並不會產生訊息。一旦碰到中斷點指示它可以被永久移除以"Z"命令。這個命令會將 INT 機器語言取代 NOPs (否作業)。

而且,如果必要的硬體可用,nonmaskable 插斷 (NMI) 可用來中斷並進入偵錯工具。這通常表示有一個外部的 「 停止 」 按鈕,以連接至偵錯的卡安裝在開發電腦的插槽中。某些機器可能有連線到 NMI 線條機器匯流排上的面板按鈕的功能。在任何情況下使用 NMI 具有能夠以 [切割成具有"掛 」 以停用插斷的機器的優點。

適用於程式設計人員] 開發虛擬裝置驅動程式 (VxD) Debug_Out 巨集都可以使用結合終端機是 ASCII 字串傳送至偵錯和執行將會中斷偵錯工具的一個 INT] 1。

在標準模式中使用 WDEB386

主要是提供 WDEB386 偵錯工具增強的模式偵錯 ; 不過,它也可用在標準模式中 386 處理器上。在一般的 WDEB386 偵錯工具,在標準模式下作業是相同像增強模式不同之處在於許多功能會使用特別是在 Windows 3.0 中。

比方說"/ b"中斷啟動選項才可用在增強模式上 Windows 3.0。並在標準模式下,Windows 3.1 上使用。許多點 」 命令 (以句號做為前置字元的命令) 可供增強模式,而仍無法使用在標準模式下。

判斷處理器的狀態

一旦偵錯工具中給予控制項,提示使用的字元將會提供處理器的受保護的模式的狀態。下列清單顯示何種提示字元可能會顯示與每個的意義:
    Character  Meaning
    ---------  -------

       >       The processor is in real mode
       #       The processor is in protected mode
       -       The processor is in virtual 8086 mode
				
處理器處於此模式將會執行何種程式碼的好指示。例如,如果 「 提示 」 是一個"-(連字號) 目前的指令資料流是某處在 MS-DOS 在 BIOS 或可能是在 TSR 或 MS-DOS 的裝置驅動程式。這是因為 Windows 增強的模式一層必須切換到 V86 模式來執行 MS-DOS 或 BIOS 函式的處理器。或者,如果出現提示為 「 # 」 (數字符號)--這可能是以 Windows 為基礎的應用程式、 DLL 或甚至增強的模式層--受保護的模式程式碼正在執行。

其中一個最重要層面的"了解什麼執行 「 在增強模式中使用 WDEB386 下 Windows 為某些認知 WIN386.EXE 時。本單元是由 VMM (虛擬機器管理員) 和所有 VxD (虛擬裝置) 所組成。這些元件通常共同會參照為 「 增強的模式層","響鈴零的程式碼 」 或只是 「 WIN386 」。在 [Windows 3.0 和 3.1 及工作群組,3.0、 3.1 及 3.11,版本的 Windows 如果偵錯工具提示 」 是"#",CS 暫存器的值為 0028h,表示 WIN386 中停止該電腦。

停止 WIN386 中的可能會也可能令人滿意。比方說停止在 WIN386 WDEB386 的能力可讓單一步驟透過 VxD 有問題的 VxD 開發人員。但是,應用程式或裝置驅動程式的程式設計人員使用 WDEB386,因為其 「 受保護模式認知 」 中可能有沒有興趣 WIN386 正在執行的動作。在任何情況下辨識目前執行資料流相關聯的系統元件,是有效地使用 WDEB386 一個重要步驟。

使用 [點] 指令

或許最有趣 (且令人混淆) 組件有關使用 WDEB386 情況牽涉到點 」 命令也就是前面有一段的命令。 其中一個混淆的原因是除非安裝 WIN386.EXE 偵錯版本,否則大部份點指令是無法使用。範例如果在增強模式中執行 Windows 時出現下列訊息
未載入 Win386 不偵錯版本,或沒有回應
它很可能是表示安裝 WIN386.EXE 零售版本。如需有關安裝偵錯版本的 WIN386 字查詢的詳細資訊:
prod(winddk) 和 wdeb386
此外,如果 Windows 處於標準模式時,使用 WDEB386,將會永遠出現此訊息。

點傾印的命令

在概念上,點命令是 「 外部 」 的命令或操作資料結構和 Windows 環境的特定作業的命令。比方說 D (傾印) 指令會顯示記憶體位置,如會從一個偵錯工具預期,但.DG"命令顯示 Windows 全域堆積資訊很多相同的方式為 HEAPWALK 應用程式。

大部分的.Dx 指令不需要 WIN386.EXE,偵錯版本,並且也都能使用 [標準模式。本文所述的命令的其餘部分需要 WIN386.EXE 這兩個偵錯版本,並增強模式下作業。一旦一切都正確地,安裝"?? 」 說明命令應該提供線上的快速參考點的命令。

應該進行的一個重要區別是"K"和".DS 」 命令之間差異。"K"命令將 Windows 堆疊查核行程,只要偵錯工具停止在 Windows 架構應用程式或動態連結程式庫 (DLL) 程式碼中。不過,如果偵錯工具追蹤透過 WIN386 程式碼,"K"命令不會產生任何有用的輸出。基於這個理由.DS"命令已經提供要顯示 WIN386 堆疊。這是另一個示範的"了解什麼執行 「 重要性如本文先前所述。

點 VM 命令

若要偵錯增強的模式層級的 Windows 原先設計 WDEB386 ; 因此,可能有 WIN386 中間的已停止偵錯工具的情況。比方說如果停止執行,使用 CTRL + ALT + SYS RQ,機器會不立即停止於已執行的指令但而是在 WIN386 程式碼中的中斷點。因此,一般的暫存器不通常包含任何將會使用任何給程式開發人員嘗試偵錯驅動程式或應用程式的項目。

但是,作業目前的虛擬機器的狀態可以利用.Vx 命令會顯示。比方說.VM 」 會顯示狀態旗標,登錄內容、 目前的指令和目前的 VM 堆疊的一部份。鍵入.VL 」 將會產生所有 VM 的清單在系統中。這些指令可以用來取得該應用程式概觀 DLL、 MS-DOS 或 BIOS 執行狀態,相較於 WIN386 的狀態。

點記憶體命令

.Mx 命令上記憶體的狀態顯示進階的資訊。 許多功能都列印內部 WIN386 資訊更容易閱讀的格式。立即有用的兩個命令是.ML"和.MP 」。這些命令從線性轉換位址,以實體,反之亦然。

點追蹤命令

[.T"] 和 [.S"命令提供保持插斷追蹤資訊。追蹤項目描述發生何種插斷,VM 區塊位址及插斷的指令位址。這些指令可以是非常有幫助,在追蹤問題 (Bug),不會產生立即徵狀。

點裝置命令

WIN386 和 WDEB386 提供個別的適用 VxD 來顯示有關自己的操作狀態資訊的能力。在一般使用者可以要求這其中 「 名稱 」 是 「 VxD 的名稱 [WDEB386 提示字元上鍵入 .name 偵錯資訊從一個 VxD。 比方說鍵入 .VDMAD 產生虛擬 DMA 裝置狀態的資訊。

發行點裝置命令將會造成 VMM 將 Debug_Query 」 訊息傳送給 「 VxD。「 VxD 不一定執行任何動作來回應這個訊息,且事實上許多 VxD 不會產生任何偵錯輸出。在一般以這種方式所產生的 VxD 的輸出未制訂,並只提供做偵錯 VxD 有問題的方法。VxD 開發人員可能會想利用這項機制來顯示定義的虛擬裝置狀態的重要資料結構。

點指令摘要

點指令,摘要於 「 Microsoft Windows 軟體開發套件工具"手冊的區段 9.6 (頁面 9 48)。線上快速參考螢幕是可用的"?"命令。

注意: 點命令的數目不會記載 SDK 工具手冊中。比方就說描述點裝置命令格式,但是不提供實際輸出所產生的特定的虛擬裝置。有許多的原因:

  • 依 WDEB386 偵錯工具但而是由元件 WIN386,不會產生通常是由點命令所產生的輸出。這些元件是修訂和比偵錯工具更動態更新,因此這些元件所產生的資訊很可能變更。
  • 輸出通常都是非常特定資訊本身,VxD,因此不通常可以適用於典型的偵錯情況。

屬性

文章編號: 72379 - 上次校閱: 2004年7月22日 - 版次: 1.1
這篇文章中的資訊適用於:
  • Microsoft Windows Device Development Kit (DDK) for Windows 3.0
  • Microsoft Windows Device Development Kit (DDK) for Windows 3.1
關鍵字:?
kbmt KB72379 KbMtzh
機器翻譯
重要:本文是以 Microsoft 機器翻譯軟體翻譯而成,而非使用人工翻譯而成。Microsoft 同時提供使用者人工翻譯及機器翻譯兩個版本的文章,讓使用者可以依其使用語言使用知識庫中的所有文章。但是,機器翻譯的文章可能不盡完美。這些文章中也可能出現拼字、語意或文法上的錯誤,就像外國人在使用本國語言時可能發生的錯誤。Microsoft 不為內容的翻譯錯誤或客戶對該內容的使用所產生的任何錯誤或損害負責。Microsoft也同時將不斷地就機器翻譯軟體進行更新。
按一下這裡查看此文章的英文版本:72379
Microsoft及(或)其供應商不就任何在本伺服器上發表的文字資料及其相關圖表資訊的恰當性作任何承諾。所有文字資料及其相關圖表均以「現狀」供應,不負任何擔保責任。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