Share via


透過USB 3.0纜線設定內核模式偵錯

適用於 Windows 的偵錯工具支援透過 USB 3.0 纜線進行內核模式偵錯。 本文說明如何手動設定 USB 3.0 偵錯。

執行調試程式的計算機稱為 主計算機,而正在偵錯的計算機稱為 目標計算機

透過 USB 3.0 纜線進行偵錯需要下列硬體:

  • USB 3.0 偵錯纜線,這是 A-A 交叉纜線,具有兩個男性類型 A 外掛程式且沒有 Vbus 連線
  • 在主計算機上,xHCI (USB 3.0) 主機控制器
  • 在目標計算機上,支援偵錯的 xHCI (USB 3.0) 主機控制器

若要簡化疑難解答,請直接連接目標與主計算機之間的纜線,以避免任何中樞或停駐站。

設定目標電腦

  1. 在目標計算機上,啟動 UsbView 工具。 UsbView 工具包含在 Windows 的偵錯工具中。

  2. 在 UsbView 中,找出所有 xHCI 主控制器。

  3. 在UsbView中,展開 xHCI 主機控制器的節點。 尋找主機控制器上的埠支援偵錯的指示。

    [Port1]
    
    Is Port User Connectable:         yes
    Is Port Debug Capable:            yes
    Companion Port Number:            3
    Companion Hub Symbolic Link Name: USB#ROOT_HUB30#5&32bab638&0&0#{...}
    Protocols Supported:
     USB 1.1:                         no
     USB 2.0:                         no
     USB 3.0:                         yes
    
  4. 記下您要用於偵錯之 xHCI 控制器的總線、裝置和函式編號。 UsbView 會顯示這些數位。 在下列範例中,總線號碼為48、裝置號碼為0,而函式號碼為0。

    USB xHCI Compliant Host Controller
    ...
    DriverKey: {36fc9e60-c465-11cf-8056-444553540000}\0020
    ...
    Bus.Device.Function (in decimal): 48.0.0
    
  5. 識別支援偵錯的 xHCI 控制器之後,下一個步驟是找出與 xHCI 控制器上埠相關聯的實體 USB 連接器。 若要尋找實體連接器,請將任何USB 3.0裝置插入目標電腦上的任何USB連接器。 重新整理 UsbView 以查看裝置所在的位置。 如果 UsbView 顯示裝置已連線到您選擇的 xHCI 主機控制器,則您找到可用於 USB 3.0 偵錯的實體 USB 連接器。

重要

使用 bcdedit 來變更開機資訊之前,您可能需要暫時暫停測試計算機上的 Windows 安全性功能,例如 BitLocker 和安全開機。 在測試完成時重新啟用這些安全性功能,並在停用安全性功能時適當地管理測試計算機。

  1. 在目標計算機上,以系統管理員身分開啟 [命令提示字元] 視窗,然後輸入下列命令:

    bcdedit /debug on
    bcdedit /dbgsettings usb targetname:<TargetName>
    

    TargetName 是您為目標電腦建立的名稱。 請注意 ,TargetName 不一定是目標計算機的官方名稱;只要它符合下列限制,它就可以是您建立的任何字串:

    • 字串不得在 TargetName 中任何大小寫的組合中包含 「debug」。。 例如,如果您在 targetname 中的任何位置使用 「DeBuG」 或 「DEBUG」,偵錯就無法正常運作。
    • 字串中唯一的字元是連字元 ( ) 、底線 (_) 、數位0到9,以及字母 A 到 Z (大寫或小寫) 。
    • 字串的最大長度為 24 個字元。
  2. 在 裝置管理員 中,找出您想要用於偵錯的 USB 控制器。 在 [一般] 索引標籤的 [位置] 底下,會顯示總線、裝置和函式號碼。 輸入此命令:

    bcdedit /set "{dbgsettings}" busparams <b.d.f>
    

    Bdf 是 USB 主機控制器的總線、裝置和函式號碼。 總線、裝置和函式編號必須是十進位格式。

    範例:

    bcdedit /set "{dbgsettings}" busparams 48.0.0
    
  3. 重新啟動目標計算機。

停用電源管理

在某些情況下,電源轉換可能會干擾USB 3.0的偵錯。 若要避免這些問題,請停用 xHCI 主機控制器及其根中樞的選擇性暫停,以供偵錯使用。

  1. 在 裝置管理員 中,流覽至 xHCI 主機控制器的節點。 以滑鼠右鍵按兩下節點,然後選擇 [ 屬性]。 如果有 [電源管理 ] 索引標籤,請開啟索引標籤,然後清除 [ 允許電腦關閉此裝置以儲存電源 ] 複選框。

  2. 在 裝置管理員 中,流覽至 xHCI 主機控制器根中樞的節點。 以滑鼠右鍵按兩下節點,然後選擇 [ 屬性]。 如果有 [電源管理 ] 索引標籤,請開啟索引標籤,然後清除 [ 允許電腦關閉此裝置以儲存電源 ] 複選框。

當您完成使用 xHCI 主機控制器進行偵錯時,請重新啟用 xHCI 主機控制器的選擇性暫停。

第一次啟動偵錯會話

  1. 將USB 3.0偵錯纜線連接到您在主機和目標電腦上選擇偵錯的USB 3.0埠。
  2. 判斷在主計算機上執行的 Windows (32 位或 64 位) 位。
  3. 在主計算機上,以系統管理員) 身分開啟 WinDbg (版本,其與主計算機上執行的 Windows 位相符。 例如,如果主計算機執行的是64位版本的Windows,請以系統管理員身分開啟64位版本的WinDbg。
  4. 在 [ 檔案] 功能表上,選擇 [ 核心偵錯]。 在 [核心偵錯] 對話框中,開啟 [USB] 索引標籤。輸入您在設定目標電腦時建立的目標名稱。 按一下 [確定]。

此時,USB 偵錯驅動程式會安裝在主計算機上,這就是為什麼請務必將 WinDbg 的位與 Windows 的位相符。 安裝 USB 偵錯驅動程式之後,您可以使用 32 位或 64 位版本的 WinDbg 進行後續偵錯會話。

啟動偵錯會話

使用 WinDbg

在主計算機上,開啟 WinDbg。 在 [ 檔案] 功能表上,選擇 [ 核心偵錯]。 在 [核心偵錯] 對話框中,開啟 [USB] 索引標籤。輸入您在設定目標電腦時建立的目標名稱。 選取 [確定]。

您也可以在 [命令提示字元] 視窗中輸入下列命令來啟動與 WinDbg 的工作階段,其中 TargetName 是您在設定目標電腦時建立的目標名稱:

windbg /k usb:targetname=<TargetName>

使用 KD

在主計算機上,開啟 [命令提示字元] 視窗,然後輸入下列命令,其中 TargetName 是您設定目標計算機時建立的目標名稱:

kd /k usb:targetname=<TargetName>

重新啟動目標計算機

調試程式連線之後,請重新啟動目標計算機。 重新啟動計算機的方法之一,是從系統管理員的命令提示字元使用 shutdown -r -t 0 命令。

目標電腦重新啟動之後,調試程式應該會自動連線。

疑難排解

無法辨識 USB 裝置

如果您在插入偵錯纜線時 無法辨識文字 USB 裝置 的主機上出現 Windows 通知,則可能會發生已知的 USB 3.1 到 3.1 相容性問題。 當偵錯纜線連線到主機上的 USB 3.1 控制器和目標上的 Intel (Ice Lake 或 Tiger Lake) 3.1 USB 控制器時,此問題會影響偵錯組態。

如需詳細資訊和處理器模型清單,請參閱 Ice Lake () 和 或 Tiger Lake (微控制器) 。 若要尋找目標計算機的處理器模型,請開啟 [設定] 應用程式,然後移至 [系統 ] 和 [ 關於]。 處理器 列在 [裝置規格] 底下。

若要確認此問題,請開啟 裝置管理員,然後在通用序列總線控制器下尋找 USB 偵錯連線裝置。 如果找不到此裝置,請檢查 [其他裝置] 底下的 [未知裝置]。 以滑鼠右鍵按兩下裝置以開啟其屬性頁面。 裝置狀態文本框將會有 Windows 已停止此裝置的文字,因為它回報問題 (代碼 43) 而 USB 裝置傳回無效的 USB BOS 描述元

若要解決此問題,請從系統管理員命令提示字元執行下列命令,以變更登錄:

reg add HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\usbflags\349500E00000 /v SkipBOSDescriptorQuery /t REG_DWORD /d 1 /f
reg add HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\usbflags\045E06560000 /v SkipBOSDescriptorQuery /t REG_DWORD /d 1 /f

然後,移除並重新插入偵錯纜線。

另請參閱

手動設定內核模式偵錯