Thank you very much. Adding kaslr successfully solved the problem. Ilya Leoshkevich <i...@de.ibm.com> 于2024年9月24日周二 00:34写道:
> 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; > >