Я использую удаленный (k) GDB для отладки проблемы в модуле, который вызывает панику при загрузке, например, когда init()
вызывается.
Трассировка стека просто показывает, что do_one_initcall(mod->init)
вызывает сбой. Чтобы загрузить файл символов в GDB, мне нужно получить адрес текстового раздела модуля и получить его, чтобы загрузить модуль.
Поскольку insmod
в busybox (1.16.1) не поддерживает -m
, поэтому я застрял на grep modulename /proc/modules
+, добавляя смещение от nm
для определения адреса.
Так что здесь я сталкиваюсь с проблемой курицы и яйца - чтобы отладить загрузку модуля, мне нужно загрузить модуль - но чтобы загрузить модуль, мне нужно отладить проблема ...
Итак, я сейчас думаю о двух вариантах - есть ли способ получить информацию об адресе:
- от printk () в коде инициализации модуля
- с помощью printk () где-то в коде ядра
все это до вызова mod->init()
- чтобы я мог разместить там точку останова, загрузить файл символов, нажать c и увидеть, как он падает и горит ...