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~

Reply via email to