Я отлаживаю ядро Linux (последняя версия) с помощью GDB и QEMU.
Я установил DEBUG_INFO в yes в файле конфигурации.
Вот как я вызываю QEMU:
$> qemu-system-x86_64 -snapshot -m 4G -serial stdio -kernel ~/Documents/kernel/arch/x86_64/boot/bzImage -initrd ~/D\
ocuments/kernel/initrd/initrd_x86_64.gz -append "root=/dev/sda1 ignore_loglevel" -s
И конечно же GDB:
$> gdb vmlinux
Затем внутри gdb:
(gdb)> target remote :1234
Так что ничего удивительного.
Это останавливает QEMU. Я устанавливаю точки останова, которые, похоже, работают как обычно, и набираю «продолжить». Выполнение QEMU возобновляется.
Но затем, даже если моя функция достигнута (я вижу сообщение ядра printk, которое я установил внутри функции), gdb не останавливается.
$> qemu-system-x86_64 --version
QEMU emulator version 2.12.0 (Debian 1:2.12+dfsg-3)
Copyright (c) 2003-2017 Fabrice Bellard and the QEMU Project developers
А также
$> gdb --version
GNU gdb (Debian 8.1-4) 8.1
Я не знаю, что попробовать дальше. Любая помощь будет оценена по достоинству.
PS: для информации, я пишу кейлоггер как драйвер Linux. Итак, я регистрирую новый уведомитель клавиатуры, и это уведомитель клавиатуры не работает.
PS2: я также попробовал то, что они рекомендуют здесь вопрос о переполнении стека об установке аппаратных точек останова вместо этого, но это ничего не изменило, та же проблема.
Спасибо.
Жюльен