<div dir="ltr">Recently, I began to debug Linux kernel 5.18.10 with QEMU(qemu-system-x86_64)<br>and gdb. From Linux Inside, I know that the BIOS of QEMU would load kernel code <br>to 0x10000 when QEMU was startup, and the first instruction that QEMU would <br>execute in the Linux kernel is in 0x10200. So I set a breakpoint on 0x10200. <br>While after a continue command was sent to gdb, it received the message of <br>"Program received signal SIGTRAP, Trace/breakpoint trap." and then EIP was set <br>to 0x0. So I can't debug Linux's early booting progress.<br><br>Can someone help me figure it out?<br><br>Words below are my actions and output in QEMU and gdb.<br>1. run QEMU:<br><blockquote style="margin:0 0 0 40px;border:none;padding:0px">qemu-system-x86_64 -kernel ./arch/x86_64/boot/bzImage \<br>                   -device virtio-serial \<br>                   -chardev pty,id=virtiocon0 -device virtconsole\<br>                   -drive file=core-image-minimal-qemux86.ext4,if=virtio,format=ra\<br>                   --append "root=/dev/vda loglevel=15 console=tt\<br>                   -nographic \<br>                   -m 256 -s -S<br><br></blockquote>2. run gdb:<br><blockquote style="margin:0 0 0 40px;border:none;padding:0px">gdb /home/wt/gitrepo/linux/vmlinux</blockquote><br>3. set breakpoint on 0x10200:<br><blockquote style="margin:0 0 0 40px;border:none;padding:0px">// output of gdb<br>(gdb) b *0x10200<br>Breakpoint 1 at 0x10200</blockquote><br>4. continue on gdb:<br><blockquote style="margin:0 0 0 40px;border:none;padding:0px">// output of QEMU<br>SeaBIOS (version 1.15.0-1)<br>iPXE (<a href="https://ipxe.org">https://ipxe.org</a>) 00:03.0 CA00 PCI2.10 PnP PMM+0FF8B2A0+0FECB2A0<br>Booting from ROM..</blockquote><br><blockquote style="margin:0 0 0 40px;border:none;padding:0px">// output of gdb<br>(gdb) c<br>Continuing.</blockquote><blockquote style="margin:0 0 0 40px;border:none;padding:0px">Program received signal SIGTRAP, Trace/breakpoint trap.<br>0x0000000000000000 in fixed_percpu_data ()<br>(gdb) c<br>Continuing.<br>Program received signal SIGTRAP, Trace/breakpoint trap.<br>0x0000000000000000 in fixed_percpu_data ()</blockquote></div>