Настройка отладки Kernel-Mode через кабель USB 2.0 вручную

Средства отладки для 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 отображает эти выходные данные для контроллера узла EHCI, который поддерживает отладку через порт 1.

    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-соединитель, который можно использовать для отладки. Возможно, нет внешнего физического USB-соединителя, связанного с портом отладки на контроллере EHCI. В этом случае можно найти физический USB-соединитель внутри компьютера. Выполните те же действия, чтобы определить, подходит ли внутренний USB-соединитель для отладки ядра. Если не удается найти физический USB-соединитель (внешний или внутренний), связанный с портом отладки, компьютер нельзя использовать в качестве целевого объекта для отладки по кабелю USB 2.0.

    Примечание См. это замечание для исключения.

Важно!

Перед использованием bcdedit для изменения сведений о загрузке может потребоваться временно приостановить функции безопасности Windows, такие как BitLocker и безопасная загрузка на тестовом компьютере. После завершения отладки и отключения отладки ядра можно повторно включить безопасную загрузку.

  1. На целевом компьютере откройте окно командной строки с правами администратора и введите следующие команды:

    • bcdedit /debug on
    • bcdedit /dbgsettings usb targetname:TargetName

    Где TargetName — это имя, создаваемое для целевого компьютера. Обратите внимание, что TargetName не обязательно должно быть официальным именем целевого компьютера. Это может быть любая строка, которую вы создаете, если она соответствует следующим ограничениям:

    • Строка не должна содержать слово debug в любом месте TargetName в верхнем или нижнем регистре. Например, если вы используете DeBuG или DEBUG в любом месте целевого имени, отладка будет работать неправильно.
    • Единственными символами в строке являются дефис (-), символ подчеркивания(_), цифры от 0 до 9 и буквы A–Z (в верхнем или нижнем регистре).
    • Максимальная длина строки составляет 24 символа.
  2. В диспетчер устройств найдите USB-контроллер, который планируется использовать для отладки. В разделе Расположение на вкладке Общие отображаются номера шины, устройства и функции. Введите эту команду:

bcdedit /set "{dbgsettings}" busparamsb.d.f

где b, d и f — номера шины, устройства и функции для хост-контроллера. Номера шины, устройства и функции должны быть в десятичном формате (например, busparams 0.29.7).

  1. Перезагрузите целевой компьютер.

Настройка главного компьютера

  1. Убедитесь, что главный компьютер не настроен для отладки по USB. (При необходимости откройте окно командной строки с правами администратора, введите bcdedit /debug off и перезагрузите.)
  2. На хост-компьютере используйте UsbView, чтобы найти контроллеры узла и порты EHCI, поддерживающие отладку. По возможности подключите один конец отладочного кабеля USB 2.0 к порту EHCI (на хост-компьютере), который не поддерживает отладку. В противном случае подключите кабель к любому порту EHCI на хост-компьютере.
  3. Подключите другой конец отладочного кабеля USB 2.0 к соединителю, который вы определили ранее на целевом компьютере.

Первый запуск сеанса отладки

  1. Определите разрядность (32-разрядная или 64-разрядная версия) Windows, работающей на хост-компьютере.
  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-разъемам на компьютере в ПРЕДСТАВЛЕНИи USB не отображается устройство, подключенное к порту с поддержкой отладки (в этом примере порт 2). USBView может отображать внешний соединитель, сопоставленный с портом контроллера xHCI, если на самом деле внешний соединитель сопоставлен с портом контроллера eHCI с поддержкой отладки.

Снимок экрана: контроллеры xHCI и EHCI в USBView.

В таком случае вы по-прежнему можете установить отладку в режиме ядра через кабель USB 2.0. В приведенном здесь примере необходимо подключить отладочный кабель USB 2.0 к соединителю, который отображается как сопоставленный с портом 2 контроллера xHCI. Затем необходимо задать для параметров шины номера шины, устройства и функции контроллера eHCI (в этом примере 0.29.0).

bcdedit /set "{dbgsettings}" busparams 0.29.0

Дополнительная поддержка

Советы по устранению неполадок и другие сведения см. в блоге Microsoft USB.

См. также раздел

Настройка отладки Kernel-Mode вручную