Краткий ответ
Никогда не используйте ... linux ... / scripts / gdb / vm linux -gdb.py. Используйте файл vm linux -gdb.py, который находится в каталог root вашего вывода сборки ядра вместе с файлом vm linux.
Если этот файл не существует, вам необходимо:
Activate CONFIG_GDB_SCRIPTS in your kernel configuration
Длинное руководство
Сначала убедитесь, что gdb-скрипты будут созданы во время сборки ядра:
make menuconfig
Enable CONFIG_GDB_SCRIPTS
make
Затем выясните, использует ли ваша сборка ядра отдельную версию создайте выходную папку, а затем следуйте ОДНОЙ (xor) из следующих глав:
Либо: сборка на месте без двоичного файла сборки dir
Если вы собираете ядро с помощью файлов .o и .ko Загроможденный внутри исходного кода (например, Ubuntu рекомендует его на wiki.ubuntu.com ), вы можете перейти в исходную папку root, например, предположим, что вы встроили в папку ~ / gdbenv, Запустите GDB оттуда, а затем загрузка будет возможна из коробки:
cd ~/gdbenv
gdb ./vmlinux
(gdb) add-auto-load-safe-path ~/gdbenv
(gdb) source ~/gdbenv/vmlinux-gdb.py
Или: Когда ваш способ построения ernel выводит двоичные файлы в отдельном каталоге сборки
Это делается, например, в сборке Yocto, где все двоичные файлы оказываются в другой папке, не смешанной с исходной папкой. В таких средах вам нужно собрать все вместе в одной среде (vm linux, gdb-scripts и, возможно, исходные коды ядра).
tar -xf ~/Downloads/linux-blabla.tgz -C ~/gdbenv (optional)
cp .../build/vmlinux-gdb.py ~/gdbenv
mkdir ~/gdbenv/scripts
cp -r .../build/scripts/gdb ~/gdbenv/scripts
cp .../build/vmlinux ~/gdbenv
Then procede like in the preceeding chapter (cd ~/gdbenv, gdb ./vmlinux ...)