# Linux Kernel Module Cheat

#### 4.3.2. KDB ARM

TODO neither `arm` and `aarch64` are working as of 1cd1e58b023791606498ca509256cc48e95e4f5b + 1.

`arm` seems to place and hit the breakpoint correctly, but no matter how many `go` commands I do, the `count.sh` stdout simply does not show.

`aarch64` seems to place the breakpoint correctly, but after the first `go` the kernel oopses with warning:

    WARNING: CPU: 0 PID: 46 at /root/linux-kernel-module-cheat/submodules/linux/kernel/smp.c:416 smp_call_function_many+0xdc/0x358

and stack trace:

    smp_call_function_many+0xdc/0x358
    kick_all_cpus_sync+0x30/0x38
    kgdb_flush_swbreak_addr+0x3c/0x48
    dbg_deactivate_sw_breakpoints+0x7c/0xb8
    kgdb_cpu_enter+0x284/0x6a8
    kgdb_handle_exception+0x138/0x240
    kgdb_brk_fn+0x2c/0x40
    brk_handler+0x7c/0xc8
    do_debug_exception+0xa4/0x1c0
    el1_dbg+0x18/0x78
    __arm64_sys_write+0x0/0x30
    el0_svc_handler+0x74/0x90
    el0_svc+0x8/0xc

My theory is that every serious ARM developer has JTAG, and no one ever tests this, and the kernel code is just broken.