2015-06-01 5 views
0

Я пытаюсь заставить отладку ядра работать во время загрузки. Я выполнил все шаги, чтобы установить его (how to use kgdb over ethernet(kgdboe)?) и может подключаться хорошо, когда я insmod после загрузки, но если добавить этотkgdboe kgdb отладка ядра при загрузке

BOOT_IMAGE=/vmlinuz-4.0.0-rc7+ root=UUID=<my_root> ro drm.debug=0x04 kgdbwait [email protected]<src_ip>/eth1,@<target_ip>/ vt.handoff=7 

к строке загрузки ядра, я не вижу модуль загружен, и он не kgdbwait.

Когда я смотрю на свою kern.log, я вижу следующее:

kgdboe: eth0 does not have a in_ifaddr struct associated. Cannot get default IP address. 

У меня есть и eth0 и eth1, кстати, но только eth1 подключен.

Любые предложения? Это просто, что сетевая карта pcie не загружена до загрузки и вызывает у меня проблемы?

Кроме того, почему мне нужно указывать исходные или целевые IP-адреса? Есть ли способ иметь kgdboe принимать все IP-адреса, даже при попытке загрузить его при загрузке?

Благодаря

ответ

1

Да, для раннего ядра отладки kgdboe реально не работает. Существует несколько вопросов, некоторые из которых легко решить, некоторые из которых не могут быть решены. Вы можете жестко связать требуемые модули, а не требовать их загрузки, чтобы решить простую проблему. Но основная проблема заключается в том, что раннее ожидание kgdb приостанавливает все рабочие потоки, и почти все драйверы карт Ethernet PCIe требуют рабочих потоков, или же требуют IRQ. Даже при поддержке опроса Ethernet-драйвера (очень ограниченного) IRQ может быть выгружен (или незаконно удерживать блокировки) и предотвратить работу драйвера опроса Ethernet. В результате ранняя отладка ядра не работает с kgdboe надежно и с некоторыми драйверами Ethernet вообще. (например, kgdbwait в загрузочной строке GRUB2.) Иногда случалось говорить о взломе различных источников драйвера Ethernet, чтобы попытаться обеспечить поддержку kgdboe по специальному Ethernet-драйверу, но никто из них не знает об этом. Вам по-прежнему лучше использовать последовательный порт и для полной функциональности - последовательную консоль, которая может быть мультиплексирована на один последовательный порт, если необходимо, с помощью kgdboc (agent-proxy). Если нужен настоящий удаленный доступ, то удалите его в систему отладки, которая инициирует последовательное соединение.

Вы также можете использовать порт USB, но для этого требуется специальный USB-кабель USB < ->, который больше не продается. (Ajays Blue dongle). Они были прекращены около 6 месяцев назад, и пока нет никакой замены. (Это было устройство для отладки Windows, адаптированное к Linux, и Windows перешла к встроенным средствам отладки USB3.0, а Linux еще не догнала этого.) Итак, если у вас нет необходимого USB-конвертера или нет другого источника, или у вас есть альтернативный адаптер, вам не повезло на USB2.0.

Серийный еще ваш лучший вариант, к сожалению, даже в 2016 году См: http://kdbg.wiki.kernel.org

 Смежные вопросы

  • Нет связанных вопросов^_^