Saya sedang men-debug Kernel Linux (versi terbaru) menggunakan GDB dan QEMU.
Saya telah menyetel DEBUG_INFO ke ya di file konfigurasi.
Inilah cara saya memanggil 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
Dan GDB tentu saja:
$> gdb vmlinux
Kemudian di dalam gdb:
(gdb)> target remote :1234
Jadi tidak ada yang luar biasa.
Ini menghentikan QEMU. Saya mengatur breakpoint saya, yang sepertinya berfungsi seperti biasa, dan saya mengetik "lanjutkan". Eksekusi QEMU dilanjutkan.
Namun kemudian, meskipun fungsi saya tercapai (saya melihat pesan kernel printk yang saya atur di dalam fungsi tersebut), gdb tidak berhenti.
$> 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
Dan
$> gdb --version
GNU gdb (Debian 8.1-4) 8.1
Saya tidak tahu harus mencoba apa selanjutnya. Bantuan apa pun akan dihargai.
PS: sebagai informasi, saya menulis keylogger sebagai driver Linux. Jadi saya mendaftarkan pemberi notifikasi keyboard baru, dan ini adalah notifikasi keyboard yang gagal.
PS2: Saya juga mencoba apa yang mereka rekomendasikan di sini pertanyaan stack overflow tentang menyetel breakpoint perangkat keras sebaliknya, tapi itu tidak mengubah apa pun, masalah yang sama.
Terima kasih.
Julien