2

I am debugging the Linux Kernel (latest version) using GDB and QEMU.

I have set DEBUG_INFO to yes in the configuration file.

Here is how I call 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 And GDB of course:

$> gdb vmlinux

Then inside gdb:

(gdb)> target remote :1234

So nothing amazing.

It stops QEMU. I set my breakpoints, which seems to work as usual, and I type "continue". The QEMU execution resumes.

But then, even if my function is reached (I see the kernel message printk I set inside the function), gdb does not stop.

$> 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

And

$> gdb --version GNU gdb (Debian 8.1-4) 8.1

I don't know what to try next. Any help would be appreciated.

PS: for information, I am writing a keylogger as a Linux driver. So I am registering a new keyboard notifier, and this is the keyboard notifier that is failing.

PS2: I also tried what they recommend here stack overflow question about setting hardware breakpoints instead, but it did not change anything, same problem.

Thank you.

Julien

0 Answers0