Настройка отладки ядра двух машин по сети - PullRequest
0 голосов
/ 08 мая 2018

Я хотел бы проверить опцию отладки моего драйвера ядра, установленного на удаленной физической машине (так как у меня нет кабелей firewire). Читая соответствующую документацию, я не видел никаких ограничений в отношении удаленной физической среды отладки, поэтому я решил, что оба кабеля FireWire и IP по беспроводной сети должны работать.

Я думал, что удаленное соединение lldb с использованием kdp-remote <machine-ip> поможет, но я не получаю никакого ответа.

Однако с удаленной виртуальной машины это удается, даже если виртуальная машина может быть расположена на удаленной физической машине.

Моя конфигурация загрузочных аргументов keepsyms=1 debug=0x144 -v

1 Ответ

0 голосов
/ 09 мая 2018

Мы выяснили проблему в комментариях (пункт 2 ниже), но для потомков вот список вещей, чтобы проверить, не работает ли отладка ядра xnu:

  1. Целевая машина должна иметь физический порт Ethernet, который подключен через PCIe или Thunderbolt, или вы должны использовать прямое соединение FireWire (опционально через Thunderbolt). Адаптеры USB-Ethernet не будут работать на целевом конце. Клиентский компьютер менее суетливый, вы можете использовать Wi-Fi или USB-Ethernet там.
  2. Протокол использует UDP, а не TCP. На вашем компьютере lldb работает брандмауэр, который может блокировать UDP-пакеты? (Вы можете попробовать отправить пакеты udp от цели к клиенту с помощью инструмента nc (netcat), пока машина не разбилась.)
  3. Корректна ли запись ARP на клиентском компьютере? arp <target ip> должен дать MAC-адрес целевого интерфейса.
  4. Аварийный Mac НЕ будет отвечать на эхо-запросы, только на пакеты KDP через UDP. Так что отказ от пинга ничего не значит.
  5. Насколько я знаю, машина не будет запрашивать новую аренду DHCP в случае сбоя, так что это не должно быть проблемой, но вы всегда можете попробовать установить статический IP-адрес просто для уверенности.
  6. Вы перезагружались после установки boot-args? Они действуют только при новой загрузке.
  7. Если SIP активен, вы можете установить только nvram переменные из среды восстановления начиная с OS X / macOS 10.11 и выше. Вы можете запустить nvram boot-args, чтобы убедиться, что настройки застряли.

Моя личная рекомендация - использовать FireWire для отладки ядра, если это возможно, оно кажется самым быстрым и надежным в моем опыте.

...