# Linux Kernel Module Cheat

##### 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.