共用方式為


使用 WinDbg 進行即時內核模式偵錯 (傳統)

您可以使用 WinDbg 來起始即時內核模式偵錯會話的方式有兩種。

WinDbg 功能表

當 WinDbg 處於休眠模式時,您可以從 [檔案] 功能表或按 CTRL+K 選擇 [核心偵錯] 來開始核心偵錯會話。 出現 [ 核心偵錯] 對話框時,按兩下適當的索引標籤: NETCOMUSB本機。 每個索引標籤都會指定不同的連接方法。

命令提示字元

在命令提示字元視窗中,您可以在啟動 WinDbg 時起始內核模式偵錯會話。 輸入下列其中一個指令:

windbg [-y SymbolPath] -k net:port=PortNumber,key=Key[,target=TargetIPAddress|TargetMachineName]

windbg [-y SymbolPath] -k usb:targetname=USBString

windbg [-y SymbolPath] -k com:port=ComPort,baud=BaudRate

windbg [-y SymbolPath] -k com:ipport=SerialTcpIpPort,port=SerialIPAddress

windbg [-y SymbolPath] -k com:pipe,port=\\VMHost\pipe\PipeName[,resets=0][,reconnect]

windbg [-y SymbolPath] -k com:調製解調器

windbg [-y SymbolPath] -kl

windbg [-y SymbolPath] -k

如需詳細資訊,請參閱 WinDbg 命令行選項

環境變數

若要透過序列進行偵錯(COM 埠),您可以使用環境變數來指定連線設定。

使用下列變數來指定序列連接。

set _NT_DEBUG_PORT = ComPort

set _NT_DEBUG_BAUD_RATE = BaudRate

如需詳細資訊,請參閱 內核模式環境變數

參數

SymbolPath
符號檔所在的目錄清單。 清單中的目錄會以分號分隔。 如需詳細資訊,請參閱 符號路徑

PortNumber
要用於網路偵錯的埠號碼。 您可以選擇 49152 到 65535 的任何數位。 如需詳細資訊,請參閱 手動設定網路連線。

鑰匙
要用於網路偵錯的加密金鑰。 我們建議您使用自動產生的金鑰,當您設定目標計算機時,bcdedit 會提供此金鑰。 如需詳細資訊,請參閱 手動設定網路連線。

TargetIPAddress
目標計算機的 IPv4 位址。

指定 target= IP 位址時,這會導致調試程式藉由將特殊封包傳送至目標,以起始與指定目標計算機的連線,而導致它嘗試與該調試程序連線。 調試程式會每隔半秒重複將封包傳送至目標,並嘗試連線。 如果連線成功,目標會卸除任何現有的連線,並只與調試程式的這個實例通訊。 這可讓您從現有的偵錯連線中控制偵錯會話。

當目標設定為主機 IP 位址,且調試程式正在具有已設定主機 IP 位址的計算機上執行時,就不需要指定 target= IP 位址參數。 當目標設定為主機 IP 位址時,它會每隔三秒將 OFFER 封包傳送給主機。 未指定 target= IP 位址時,OFFER 封包可讓調試程式連線到主機。

如需在目標上設定主機 IP 位址的詳細資訊,請參閱 設定 KDNET 網路核心偵錯自動手動設定 KDNET 網路核心偵錯。

TargetMachineName
目標計算機的機器名稱。 若要使用計算機名稱,網路上的 DNS 系統必須具有與目標電腦的 IP 位址相關聯的電腦名稱。

USBString
USB 連接字串。 這必須符合以 /targetname 開機選項指定的字串。 如需詳細資訊,請參閱 設定 USB 3.0 xHCI-DBC 內核模式偵錯 (KDUSB)

ComPort
COM 埠的名稱。 這可以是格式 「com2」 或格式為 「\.\com2」,但不應該只是數位。 如需詳細資訊,請參閱 手動設定序列連線。

BaudRate
傳輸速率。 這可以是 9600、19200、38400、57600 或 115200。

SerialTcpIpPort
模擬序列 COM 埠的目標 TCP IP 埠。

SerialIPAddress
模擬序列 COM 埠的目標 TCP IP 位址。

VMHost
偵錯虛擬機時, VMHost 會指定虛擬機執行所在的實體計算機名稱。 如果虛擬機在與核心調試程式本身相同的計算機上執行,請針對 VMHost 使用單一期間 (.)。 如需詳細資訊,請參閱 設定虛擬機的連線。

PipeName
虛擬機為偵錯連線建立的管道名稱。

resets=0
指定當主機和目標正在同步處理時,可以傳送無限數量的重設封包到目標。 只有在偵錯特定類型的虛擬機時,才需要此參數。

重新
如果發生讀取/寫入失敗,調試程式會自動中斷連線,並重新連接管道。 此外,如果在啟動調試程式時找不到命名管道,重新連接參數將會導致它等候此名稱的管道出現。 只有在偵錯特定類型的虛擬機時,才需要此參數。

-kl
讓調試程式執行本機內核模式偵錯。 如需詳細資訊,請參閱 本機內核模式偵錯

舊版參數

重要

1394 傳輸可用於 Windows 10 版本 1607 和更早版本。 無法在更新版本的 Windows 中使用。 您應該將項目轉換為其他傳輸,例如使用乙太網路的 KDNET。 如需該傳輸的詳細資訊,請參閱 自動設定 KDNET 網路核心偵錯。

1394Channel
1394 通道號碼。 有效的通道號碼是介於 0 到 62 之間的任何整數,包含。 1394Channel 必須符合目標計算機所使用的數位,但不取決於適配卡上所選擇的實體 1394 埠。

1394Protocol
要用於 1394 核心連線的連接通訊協定。 這幾乎一律可以省略,因為調試程式會自動選擇正確的通訊協定。 如果您想要手動設定此設定,且目標計算機正在執行 Windows XP, 應該將 1394Protocol 設定為等於 「channel」。。 如果目標計算機執行 Windows Server 2003 或更新版本, 應該將 1394Protocol 設定為 “instance”。 如果省略,調試程式會預設為適用於目前目標計算機的通訊協定。 這只能透過命令行或環境變數來指定,而不是透過 WinDbg 圖形化介面來指定。

範例

下列批處理檔可用來設定和啟動透過 COM 埠連線的偵錯會話。

set _NT_SYMBOL_PATH=d:\mysymbols
set _NT_DEBUG_PORT=com1
set _NT_DEBUG_BAUD_RATE=115200
set _NT_DEBUG_LOG_FILE_OPEN=d:\debuggers\logfile1.log
windbg -k

下列命令行可用來啟動 WinDbg,而不需要任何環境變數。

windbg -y d:\mysymbols -k com:port=com2,baud=57600

windbg -y d:\mysymbols -k com:port=\.\com2,baud=115200

windbg -y d:\mysymbols -k net:port=50000,key=AutoGeneratedKey

windbg -y d:\mysymbols -k net:port=50000,key=AutoGeneratedKey,target=TargetIPAddress

另請參閱

WinDbg 命令行選項

內核模式環境變數