Is it possible to break into the debugger from source code?
Many processors provide an opcode or trap for this purpose. A few examples:
Blackfin: asm("EMUEXCPT;")
MIPS: _asm__volatile("break %0" : : "i" (512))
ARM Cortex: asm("BKPT #0;")
CR16: asm("excp bpt")
BR. Leo.