Я следовал этому руководству , чтобы настроить среду отладки ядра Linux с помощью gdb и VMWare.
Все прошло гладко, пока эта часть:
Подключить GDB к отладчику
Мы пока не сможем увидеть символы из загруженных модулей ядра. Мы загрузим вспомогательный скрипт и затем запустим lx-символы, которые будут проверять загруженные модули и соответствующим образом настраивать GDB:
(gdb) source home/alambert/kernel/source/linux-4.13.0/debian/build/build-generic/vmlinux-gdb.py
(gdb) lx-symbols
При запуске этого в моей системе я получаю следующую ошибку Python:
pwndbg> source /home/user/kernel/source/linux-4.4.0/debian/build/build-generic/vmlinux-gdb.py
pwndbg> lx-symbols
loading vmlinux
Python Exception <class 'gdb.error'> There is no member named module_core.:
Error occurred in Python command: There is no member named module_core.
<Ч />
Моя настройка
И машины отладчика и - это виртуальные машины, отладчик - Ubuntu 16.04, а отладчик - Ubuntu 18.04.
Debugee:
$ cat /proc/version
Linux version 4.4.0-134-generic (buildd@lgw01-amd64-033) (gcc version 5.4.0 20160609 (Ubuntu 5.4.0-6ubuntu1~16.04.10) ) #160-Ubuntu SMP Wed Aug 15 14:58:00 UTC 2018
Debugger:
$ cat /proc/version
Linux version 4.15.0-34-generic (buildd@lgw01-amd64-047) (gcc version 7.3.0 (Ubuntu 7.3.0-16ubuntu3)) #37-Ubuntu SMP Mon Aug 27 15:21:48 UTC 2018
$ gdb --version
GNU gdb (GDB) 8.2
Copyright (C) 2018 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.
$ python -V
Python 2.7.15rc1
<Ч />
Сначала я подумал, что это проблема совместимости с python3 / 2, поэтому я перекомпилировал gdb с python 2.7, но получил точно такую же ошибку.
Я также убедился, что это не проблема pwndbg
- я попробовал это с vanilla gdb с точно таким же эффектом.
Я убедился, что скрипты-помощники python были созданы в процессе компиляции ядра debugee. Я фактически позволил завершить весь процесс сборки, а не останавливать его после того, как сценарии были созданы, как подсказывает руководство, - просто чтобы убедиться, что все они на месте.
Я пытался найти ошибку в Интернете, но, похоже, о ней ничего не говорится.
Кто-нибудь когда-нибудь сталкивался с этой проблемой?