More convinient replacement for http://www.freertos.org/Debugging-Hard-Faults-On-Cortex-M-Microcontrollers.html
Execution automatically stops when catching fault and you may examine fault context via function arguments.
Also with .gdbinit script provided you may try to rollback (unwind/return) to place where fault occured. It's not always possible.
Tested with gcc compiler and CMSIS.
cm3_exception_support.zip