我正在使用 GDB和QEMU 调试Linux内核(最新版本)。
我已在配置文件中将 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。我设置了断点,该断点似乎照常工作,然后键入“ continue”。恢复执行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:我也尝试了他们在stack overflow question上建议的设置硬件断点的方法,但是它并没有改变任何东西,同样的问题。
谢谢。
朱利安