On 4/6/22 09:30, Shuai Xue wrote:
Dear, folks,
I try to debug Linux kernel with QEMU in single-stepping mode on aarch64
platform,
the added breakpoint hits but after I type `step`, the gdb always jumps into
interrupt.
My env:
gdb-10.2
qemu-6.2.0
host kernel: 5.10.84
VM kernel: 5.10.84
The steps to reproduce:
# host console: run a VM with only one core, the import arg: <qemu:arg
value='-s'/>
# details can be found here:
https://www.redhat.com/en/blog/debugging-kernel-qemulibvirt
virsh create dev_core0.xml
# run gdb client
gdb ./vmlinux
# gdb client on host console
(gdb) dir
./usr/src/debug/kernel-5.10.84/linux-5.10.84-004.alpha.ali5000.alios7.aarch64
(gdb) target remote localhost:1234
(gdb) info b
Num Type Disp Enb Address What
1 breakpoint keep y <MULTIPLE>
1.1 y 0xffff800010361444
mm/memory-failure.c:1318
1.2 y 0xffff800010361450 in memory_failure
at mm/memory-failure.c:1488
(gdb) c
Continuing.
# console in VM, use madvise to inject a hwposion at virtual address
vaddr,
# which will hit the b inmemory_failur: madvise(vaddr, pagesize,
MADV_HWPOISON);
# and the VM pause
./run_madvise.c
# gdb client on host console
(gdb)
Continuing.
Breakpoint 1, 0xffff800010361444 in memory_failure () at
mm/memory-failure.c:1318
1318 res = -EHWPOISON;
(gdb) n
vectors () at arch/arm64/kernel/entry.S:552
552 kernel_ventry 1, irq // IRQ
EL1h
The 'n' command is not a single-step: use stepi, which will suppress interrupts.
Anyway, not a bug.
r~