3.6.3.1. GDB step debug userland non-init without --gdb-wait
TODO: if I try GDB step debug userland non-init without --gdb-wait
and the break main
that we do inside ./run-gdb
says:
Cannot access memory at address 0x10604
and then GDB never breaks. Tested at ac8663a44a450c3eadafe14031186813f90c21e4 + 1.
The exact behaviour seems to depend on the architecture:
-
arm
: happens always -
x86_64
: appears to happen only if you try to connect GDB as fast as possible, before init has been reached. -
aarch64
: could not observe the problem
We have also double checked the address with:
./run-toolchain --arch arm readelf -- \ -s "$(./getvar --arch arm userland_build_dir)/linux/myinsmod.out" | \ grep main
and from GDB:
info line main
and both give:
000105fc
which is just 8 bytes before 0x10604
.
gdbserver
also says 0x10604
.
However, if do a Ctrl-C
in GDB, and then a direct:
b *0x000105fc
it works. Why?!
On GEM5, x86 can also give the Cannot access memory at address
, so maybe it is also unreliable on QEMU, and works just by coincidence.