On Mon, 2024-09-23 at 22:36 +0800, jie ren wrote: > Hi, I have a question for help > I recently Using ubuntu24.4 system qemu-system-aarch64 +gdb- > multiarch to debug the kernel, setting breakpoints cannot be stopped. > system information: > ubuntu version: 22.04 > Debug kernel version: 5.0.0 > qemu version: > · qemu-system-aarch64 --version > · QEMU emulator version 8.2.2 (Debian 1:8.2.2+ds-0ubuntu1.2) > · Copyright (c) 2003-2023 Fabrice Bellard and the QEMU Project > developers > > > > gdb version: > · gdb-multiarch --version > · GNU gdb (Ubuntu 15.0.50.20240403-0ubuntu1) 15.0.50.20240403-git > · Copyright (C) 2024 Free Software Foundation, Inc. > · License GPLv3+: GNU GPL version 3 or later > <http://gnu.org/licenses/gpl.html> > · This is free software: you are free to change and redistribute it. > · There is NO WARRANTY, to the extent permitted by law. > > Steps to reproduce: > 1. Boot the system using qemu: > 1. qemu-system-aarch64 -machine virt -cpu cortex-a57 -machine > type=virt -m 1024 -smp 4 -kernel arch/arm64/boot/Image --append > "noinitrd root=/dev/vda rw console=ttyAMA0 loglevel=8" -nographic - > drive if=none,file=rootfs_ext4.img,id=hd0 -device virtio-blk- > device,drive=hd0 --fsdev > local,id=kmod_dev,path=$PWD/kmodules,security_model=none -device > virtio-9p-device,fsdev=kmod_dev,mount_tag=kmod_mount -S -s > > > Use gdb-multiarch to connect and debug: > > > gdb-multiarch vmlinux > (gdb) target remote localhost:1234 > Remote debugging using localhost:1234 > 0x0000000040000000 in ?? () > (gdb) b start_kernel > Breakpoint 1 at 0xffff2000126704ec: file init/main.c, line 538. > (gdb) c > Continuing.
I would try using the "nokaslr" kernel option: $ qemu-system-aarch64 -kernel ./Image.custom -M virt -cpu cortex-a57 - append "console=ttyAMA0 nokaslr" -s -S -nographic $ gdb-multiarch -ex 'target remote :1234' vmlinux Remote debugging using :1234 0x0000000040000000 in ?? () (gdb) b start_kernel Breakpoint 1 at 0xffff8000811e0968: file init/main.c, line 905. (gdb) c Continuing. Breakpoint 1, start_kernel () at init/main.c:905 905 char *command_line;