Учитывая трассировку стека ядра, как показано ниже, как вы определяете конкретную строку кода, где возникла проблема?
kernel: [<ffffffff80009a14>] __link_path_walk+0x173/0xfb9
kernel: [<ffffffff8002cbec>] mntput_no_expire+0x19/0x89
kernel: [<ffffffff8000eb94>] link_path_walk+0xa6/0xb2
kernel: [<ffffffff80063c4f>] __mutex_lock_slowpath+0x60/0x9b
kernel: [<ffffffff800238de>] __path_lookup_intent_open+0x56/0x97
kernel: [<ffffffff80063c99>] .text.lock.mutex+0xf/0x14
kernel: [<ffffffff8001b222>] open_namei+0xea/0x712
kernel: [<ffffffff8006723e>] do_page_fault+0x4fe/0x874
kernel: [<ffffffff80027660>] do_filp_open+0x1c/0x38
kernel: [<ffffffff8001a061>] do_sys_open+0x44/0xbe
kernel: [<ffffffff8005d28d>] tracesys+0xd5/0xe0
Хотя у меня нет проблем с поиском вызова функции, но перевод __link_path_walk плюс смещение к фактическому номеру строки является сложной частью.
Предполагая, что это для стандартного ядра, предоставляемого дистрибутивом, для которого я знаю точную версию и номер сборки, каков процесс получения необходимых метаданных и выполнения соответствующего поиска?
CONFIG_KALLSYMS
: github.com/cirosantilli/linux-kernel-module-cheat/tree/…У меня нет ~ = RHEL5 под рукой, поэтому показанный вывод получен из Fedora 20, хотя процесс должен быть в основном таким же ( имя функции изменилось ).
Вам нужно установить соответствующий
kernel-debug-debuginfo
пакет для вашего ядра (при условии RHEL или производного дистрибутива). Этот пакет предоставляетvmlinux
образ (несжатая неснятая версия ядра):это изображение может быть использовано непосредственно с
gdb
Вы также можете использовать
objdump(1)
наvmlinux
изображении:Флаги:
Вы можете найти функцию там:
и сопоставьте смещение с фактической строкой кода.
источник
Сделайте вывод дампа стека полезным снова.
источник
Если addr2line должен напечатать вопросительный знак для номера строки или objdump не сможет встроить исходный код, и у вас есть собственное ядро, обязательно перекомпилируйте ядро с установленным CONFIG_DEBUG_INFO. Возможно, вам придется воспроизвести ошибку с только что собранным ядром.
источник