Наговнякал скрипт для gdb для починки содержимого регистров чтобы можно было делать bt, up, смотреть локальные переменные и делать и прочие полезные вещи после hard fault в ARM Cortex M-микроконтроллерах:
define hfstack
	set $frame_ptr = (unsigned *)$sp
	if $lr & 0x10
		set $sp = $frame_ptr + (8 * 4)
	else
		set $sp = $frame_ptr + (26 * 4)
	end
	set $lr = $frame_ptr[5]
	set $pc = $frame_ptr[6]
	bt
end
document hfstack
set the correct stack context after a hard fault on Cortex M
end
