Conditional breakpoint while debugging STM32

It's a really common situation when working with hardware (especially while debugging asynchronous events): to stop execution while debugging only if a given event occurs. This is also called conditional breakpoint.

If you are working with the STM32 family and the CMSIS ARM package for Cortex-M processors, and your toolchain is GCC-based with GDB as debugger, you can place in your code this instruction:

#include "cortexm/ExceptionHandlers.h"
...
if(condition) {
    __DEBUG_BKPT();
}
...

GDB will automatically stop when the event occurs at that line.

This saved my life. Definitively.


Related posts

How to restore ST-LINK interface after a bad update (2.26.15 firmware)

Getting started with the STM32 Nucleo-F746ZG

STM32CubeMX 4.12 reveals new Nucleo boards with 144-pin MCU