I think the issue is that you need to halt execution right before all registers are touched in the handler. The problem I always found is that at this point it doesn't mean execution arrived there due to a hardfault as this is also used for context switches (so placing a breakpoint there is of no use).
You could catch hardfaults like https://cwiki.apache.org/confluence/display/NUTTX/High+Performance%2C+Zero+Latency+Interrupts