Когда я просматриваю OOPS-вывод ядра Linux, EIP и другой кодовый адрес имеют значения в диапазоне 0xC01 -----.В моих выводах System.map и objdump -S vmlinux
все адреса кодов по крайней мере выше 0xC1 ------.В моем vmlinux включены символы отладки (CONFIG_DEBUG_INFO).
Когда я отлаживаю по последовательному соединению (kgdb) и загружаю gdb с gdb ./vmlinux
, снова у меня возникает та же проблема, с которой я не могу совместитьУ меня в System.map и objdump
вывод.Когда я запускаю where
в GDB, я получаю беспорядочную путаницу в стеке:
#0 0xC01----- in ?? ()
#1 0xC01----- in ?? ()
#2 0xC01----- in ?? ()
...
Может кто-нибудь сделать какие-либо предложения о том, как решить эту / эти проблемы?Моя главная проблема заключается в том, как я на самом деле отображаю значение eip из OOPS в System.map или objdump -S vmlinux
.Я знаю, что OOPS даст мне имя функции и смещение в объектном коде, но меня больше беспокоит ранее упомянутая проблема и то, почему GDB не может правильно отображать обратный след стека.