Share via


手動透過USB 2.0纜線設定 Kernel-Mode 偵錯

Windows 的偵錯工具支援透過 USB 2.0 纜線進行核心偵錯。 本主題描述如何手動設定USB 2.0偵錯。

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

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

  • USB 2.0 偵錯纜線。 此纜線不是標準 USB 2.0 纜線,因為它具有額外的硬體元件,使其與 USB2 偵錯裝置功能規格相容。 您可以使用因特網搜尋來尋找這些纜線,以尋找 USB 2.0偵錯纜線一詞。

  • 在主計算機上,EHCI (USB 2.0) 主機控制器

  • 在目標計算機上,支援偵錯的 EHCI (USB 2.0) 主機控制器

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

設定目標電腦

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

  2. 在UsbView中,找出與EHCI規格相容的所有主機控制器。 例如,您可以尋找列為 [增強] 的控制器。

  3. 在UsbView中,展開EHCI主機控制器的節點。 尋找主機控制器支援偵錯的指示,並尋找偵錯埠的數目。 例如,UsbView 會針對支援在埠 1 上進行偵錯的 EHCI 主機控制器顯示此輸出。

    Xxx xxx xxx USB2 Enhanced Host Controller - 293A
    ...
    Debug Port Number:  1
    Bus.Device.Function (in decimal): 0.29.7
    

    注意 許多 EHCI 主機控制器都支援在埠 1 上進行偵錯,但某些 EHCI 主機控制器支援在埠 2 上進行偵錯。

  4. 記下您要用於偵錯之 EHCI 控制器的總線、裝置和函式號碼。 UsbView 會顯示這些號碼。 在上述範例中,總線號碼為 0、裝置號碼為 29,且函式號碼為 7。

  5. 識別 EHCI 控制器和支援偵錯的埠號碼之後,下一個步驟是找出與正確埠號碼相關聯的實體 USB 連接器。 若要尋找實體連接器,請將任何USB 2.0裝置插入目標電腦上的任何USB連接器。 重新整理 UsbView 以查看您的裝置所在位置。 如果 UsbView 顯示您的裝置已連線到您識別為偵錯埠的 EHCI 主機控制器和埠,則您找到可用於偵錯的實體 USB 連接器。 可能是沒有與 EHCI 控制器上的偵錯埠相關聯的外部實體 USB 連接器。 在此情況下,您可以在計算機內尋找實體 USB 連接器。 執行相同的步驟,以判斷內部USB連接器是否適合進行核心偵錯。 如果您找不到與偵錯埠相關聯的外部或內部) 實體 USB (連接器,則您無法使用電腦作為透過 USB 2.0 纜線進行偵錯的目標。

    注意 如需例外狀況,請參閱 此備註

重要

使用 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}” busparamsb.d.f

其中 bdf 是主控制器的總線、裝置和函式號碼。 總線、裝置和函式編號必須以十進位格式 (例如 busparams 0.29.7) 。

  1. 重新啟動目標計算機。

設定主電腦

  1. 確認主計算機未設定為USB偵錯的目標。 (如有必要,請以系統管理員身分開啟命令提示字元視窗、輸入 bcdedit /debug off,然後重新啟動.)
  2. 在主計算機上,使用UsbView尋找支援偵錯的EHCI主機控制器和埠。 可能的話,請將USB 2.0偵錯纜線的一端插入主電腦上的EHCI埠 (,) 不支援偵錯。 否則,請將纜線插入主計算機上的任何 EHCI 埠。
  3. 將USB 2.0偵錯纜線的另一端插入您先前在目標電腦上識別的連接器。

第一次啟動偵錯會話

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

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

注意 USB 2.0 偵錯纜線實際上是兩條纜線,中間有一條纜線。 保護線的方向很重要;一端為裝置提供功能,另一端則不會。 如果USB偵錯無法運作,請嘗試交換纜線的方向。 也就是說,從纜線卸除兩個纜線,然後交換纜線所連接的側邊。

啟動偵錯會話

使用 WinDbg

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

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

windbg /k usb:targetname=TargetName

使用 KD

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

kd /k usb:targetname=TargetName

如果USBView顯示可偵錯的埠,但未顯示對應至任何實體連接器的埠,該怎麼辦?

在某些計算機上,USBView 會顯示支援偵錯的埠,但不會顯示對應至任何實體 USB 連接器的埠。 例如,USBView 可能會將埠 2 顯示為 eHCI 控制器的偵錯埠號碼。

... USB Enhanced Host Controller ...
...
Debug Port Number:  2
Bus.Device.Function (in decimal): 0.29.0

此外,當您使用USBView查看個別埠時,它會列為可偵錯的功能。

[Port 2]
Is Port User Connectable: Yes
Is Port Debug Capable: Yes
...
Protocols Supported
  USB 1.1      yes
  USB 2.0      yes
  USB 3.0      no

但是當您將 USB 2.0 裝置插入 (,例如快閃磁碟驅動器) 到電腦上的所有 USB 連接器時,USBView 永遠不會顯示您的裝置連線到支援偵錯的埠 (埠 2,在此範例) 。 事實上,當外部連接器對應至 eHCI 控制器的偵錯埠時,USBView 可能會顯示對應至 xHCI 控制器埠的外部連接器。

USBView 中 xHCI 和 EHCI 控制器的螢幕快照。

在這種情況下,您仍然可以透過USB 2.0纜線建立內核模式偵錯。 在此提供的範例中,您會將USB 2.0偵錯纜線插入連接器,顯示為對應至 xHCI 控制器的埠 2。 然後,您會將總線參數設定為 eHCI 控制器的總線、裝置和函式號碼,在此範例中 (為 0.29.0) 。

bcdedit /set "{dbgsettings}" busparams 0.29.0

其他支援

如需疑難解答秘訣和其他資訊,請參閱 Microsoft USB 部落格

另請參閱

手動設定核心模式偵錯