1. Debug Options in STM32CubeIDE
1. Stepping
Step Over
- What it is: Executes the current line of code and stops at the first line of code after the function call, if there is any.
- When to use: When you want to skip a function call without entering it.
Step Into
- What it is: Executes the next line of code, and if it's a function, the debugger enters the function.
- When to use: When you want to debug a function in detail.
Step Return
- What it is: Continues running your code until the currently executing function returns.
- When to use: When you want to exit the current function after debugging it.
2. Disassembly
- 4 Columns: These columns display the Address, Machine Code, Assembly Mnemonic, and Arguments/Operands, respectively.
Example:
0x08001234 4863 LDR r0, [r1, #4]
- 0x08001234
: Memory address
- 4863
: Machine code
- LDR
: Mnemonic
- r0, [r1, #4]
: Operands
3. Breakpoints
-
Limited Number: STM32 only supports a limited number of hardware breakpoints (usually 6 or 10).
-
Breakpoint Window: You can open this window to see all active breakpoints. It's useful for managing and clearing them as needed.
4. Expression and Variable Window
-
Do Math: You can directly perform calculations in the expression window. Useful for quick evaluations or conversions.
-
Hover to View: Hovering over a variable in the code while debugging allows you to see its current value.
5. Call Stack
-
What it is: The Call Stack window shows you the chain of function calls that led to the current point in code.
-
Why it's Useful: It helps you to trace the execution flow, figure out how you arrived at a certain point, and identify any recursive functions or loops.
6. Fault Analyzer
-
What it is: The Fault Analyzer window provides insights into the faults that have triggered, like HardFaults or BusFaults.
-
Why it's Useful: This tool helps you diagnose issues at the hardware level, such as memory access violations.
7. Data Watchpoints
-
What it is: Data watchpoints allow you to break the execution when a specific variable changes.
-
Why it's Useful: Excellent for tracking variable changes and understanding how and where a variable's value is being modified.
8. Special Function Registers (SFR) Window
-
What it is: This window shows the state of the MCU's Special Function Registers.
-
Why it's Useful: Any changes here will directly affect the hardware, letting you see or manually adjust the hardware settings in real-time.