In summary, when your program is ready to debug, you must follow these steps.
getDebugChar
,putDebugChar
,flush_i_cache
,memset
,exceptionHandler
.
set_debug_traps(); breakpoint();
exceptionHook
. Normally you just use:
void (*exceptionHook)() = 0;
but if before calling set_debug_traps
, you set it to point to a
function in your program, that function is called when
gdb continues after stopping on a trap (for example, bus
error). The function indicated by exceptionHook
is called with
one parameter: an int
which is the exception number.