gdb-qemu: не может поставить точку останова на функцию ядра (ядро 4.10.0-35)

Я пытаюсь отладить ядро ​​Ubuntu с помощью KDB + qemu. Однако я не могу его отладить. Ниже приводится ошибка, которую я получаю. Может кто-нибудь помочь?

Запуск QEMU:

sudo qemu-system-x86_64 -enable-kvm -s -machine type=pc,accel=kvm -cpu host -nographic -k de -usb -m 2048 -net nic -net user,hostfwd=tcp::3389-:22 ubuntu16.04.qcow2

Запуск отладчика:

sudo gdb ./debian/build/build-generic/vmlinux -iex 'add-auto-load-safe-path .' -ex 'target remote localhost:1234'

Настройка точки останова:

gdb-peda$ b printk Breakpoint 1 at 0xffffffff811ad8f3: file /home/test/ubuntu/linux-hwe-4.10.0/kernel/printk/printk.c, line 1864. gdb-peda$ c Continuing. Warning: Cannot insert breakpoint 1. Cannot access memory at address 0xffffffff811ad8f3 Command aborted. gdb-peda$ disassemble printk Dump of assembler code for function printk: 0xffffffff811ad8f3 <+0>: Cannot access memory at address

Что я делаете неправильно здесь?

0
задан 13 October 2017 в 12:02

2 ответа

Убедитесь, что вы отключили KASLR (рандомизация макета адресного пространства ядра) или используйте файл add-symbol для добавления файла символа ядра вместо файла, чтобы вы могли вручную указать .text .data и .bss.

KASLR делает попытки более жесткими, размещая различные объекты наугад, а не фиксированные адреса.

add-symbol-file , добавьте параметр «nokaslr» в GRUB_CMDLINE_LINUX_DEFAULT в файле /etc/default/grub и обновите-grub. например,

$ grep "GRUB_CMDLINE_LINUX_DEFAULT" /etc/default/grub GRUB_CMDLINE_LINUX_DEFAULT="nokaslr" $ update-grub && reboot
0
ответ дан 18 July 2018 в 05:22

Убедитесь, что вы отключили KASLR (рандомизация макета адресного пространства ядра) или используйте файл add-symbol для добавления файла символа ядра вместо файла, чтобы вы могли вручную указать .text .data и .bss.

KASLR делает попытки более жесткими, размещая различные объекты наугад, а не фиксированные адреса.

add-symbol-file , добавьте параметр «nokaslr» в GRUB_CMDLINE_LINUX_DEFAULT в файле /etc/default/grub и обновите-grub. например,

$ grep "GRUB_CMDLINE_LINUX_DEFAULT" /etc/default/grub GRUB_CMDLINE_LINUX_DEFAULT="nokaslr" $ update-grub && reboot
0
ответ дан 24 July 2018 в 18:18

Другие вопросы по тегам:

Похожие вопросы: