Например в базовом стартапе CW PAbr DAbr и Undef - есть пустые циклы. <asm>
undef_handler:
b undef_handler
pabort_handler:
b pabort_handler
dabort_handler:
b dabort_handler
</asm>
но объявленны они как .weak т.е. их можно переопределить в другом месте.
я это делал например так:
void undef_handler() __attribute__((naked));
void undef_handler()
{
Тут вывод на индикатор сообщения
while(1);
}
А вот про простенький анализатор причины мне интересно былобы почитать тоже.