🛑 Breakpoint with condition in STM32CubeIDE
What are breakpoint are use for?
Breakpoints are used to stop program execution at a selected line, which helps to debug a particular piece of code:
In some cases you need to stop the program, when variable reaches specific value:
- Counter value
- ADC value
- Time Value
- State value
This can help trace all program stages and find out where code is wrong.
How to set ordinary breakpoint in STM32CubeIDE?
Just do double left-click right to the line's number of press Ctrl + Shift + B, the small blue dot should appear:
Note, that in some cases breakpoints will not works, to fix this turn off any optimization. Go to: Project -> Properties -> C/C++ Build -> Settings -> MCU GCC Compiler -> Optimization -> Optimization level: None (-O0)
All breakpoints you can find in the (Ctrl+ 3 -> Breakpoint (Debug)) window:
That's all, now when program reaches this breakpoint executing stops:
And you can check your variables (both global and local) to find out bug:
How to set condition-breakpoint in STM32CubeIDE?
Just do Ctrl + double left-click right to the line's number to open Properties for C/C++ Line Breakpoint and write in Condition field C-style condition with using your variable:
It will work, but, unfortunately, very bad:
This breakpoint type slows down code execution in approximately 100 times:
Another good way to set condition-breakpoint
You can just write a few string of code with condition, that you need and add ordinary breakpoint:
This works much more better, that condition-breakpoint, and don't much slow-down your program: