Я отлаживаю ядро Linux (последняя версия), используя GDB и QEMU .
Я установил DEBUG_INFO на да в файле конфигурации.
Вот как я называю 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: я также попробовал то, что они рекомендуют здесь вопрос переполнения стека о настройке аппаратных точек останова вместо этого, но это ничего не изменило, та же проблема.
Спасибо.
Julien