Я работаю с openvswitch на сервере ubuntu 14.04. Я могу легко подключить gdb к любому из своих двоичных файлов для отладки его различных функций, но когда дело доходит до его модуля ядра, я не могу отлаживать его в соответствии с моим требованием. Я использую следующие шаги для присоединения Linux Kernel с GDB: 1. GDB/TMP/vmlinux/Proc/kcore 2. Добавление символа файла в GDB: кд/SYS/модуль/openvswitch/разделы/ Ls -A1 .cat .text .data .bss 3. в БГД - добавление символов файла DataPath/Linux/openvswitch.ko 0xf87a2000 -s .data 0xf87b4000 -s .bss 0xf87b4560 4. б vxlan_udp_encap_recvВключить отладку модуля ядра из пользовательского пространства
, но когда я генерировать пакеты для тестирования модуля ядра ovs и переходить на него, говорит: «Программа не запускается».
Примечание. Я подтвердил все символы модуля, выполнив эту команду: nm root/ovs/_build-gcc/datapath/linux/openvswitch.ko =, который печатает все символы. и lsmod также подтверждает существование модуля ядра ovs.
Я хочу сделать остановку модуля ovs в указанной точке прерывания после того, как он получит сообщение из своего приложения для пользовательского пространства в сокете netlink для его детальной отладки, так же, как это позволяет мне отлаживать процесс пользовательского пространства. Пожалуйста, предложите мне, как мне решить эту проблему или если есть какая-либо альтернатива. Я буду очень благодарен за любую помощь или предложение. Спасибо!
Представьте, если бы вы могли установить точку останова в ядре, используя отладчик на том же компьютере ... тогда gdb приостанавливал ядро при достижении точки останова, а затем ваша машина полностью зависала, потому что ядро приостановлено. – immibis
любое разрешение этой темы? Я встретил ту же проблему. благодаря! –