Please enable JavaScript to view this site.

winIDEA Help

Version: 9.21.111

Breakpoints

winIDEA offers a variety of breakpoints to suit various debugging needs. For a quick overview and convenient manipulation of the breakpoints during debugging, take a look at the Breakpoints plugin.

 

 

Configuring Execution Breakpoints

You can view and manipulate all the breakpoints in the Debug / Breakpoints dialog, which you can also open by pressing the Breakpoints button Breakpoints-BreakpointsButton in the Debug Toolbar.

 

By default winIDEA is using hardware execution breakpoints. If you are running out of hardware breakpoints, you can also use (unlimited) software execution breakpoints.

Execution Breakpoints dialog shows the list of specified execution breakpoints. Execution breakpoints are used when you wish to break program execution when a specific part of the application is executed.

 

Breakpoints-ExecutionBreakpoints

 

 

Checked breakpoints - enabled (will be applied as soon as the debug session is established).

Unchecked breakpoints - ignored.

 

Folder button -  Opens a new dialogue, in which you can create a new breakpoint by typing in the name of a function.

Remove button - Allows you to remove a single breakpoint that is selected on the right (indicated by the blue background, not the checkmark)

Show button - Button guides you to the line in the editor window where the selected breakpoint can be found

Remove / Reapply / Enable / Disable All - Use the available buttons to configure  the breakpoints to your need.

 

Position - Shows where the breakpoint is set. If the breakpoint was set on the source level, it will show where exactly in the file it was set, and to which address the source line was resolved. If the breakpoint is set directly on a specific code address, it will show the address only. Pay attention to the designation written before the execution breakpoint address:

  • --: Breakpoint was not applied

 

Condition - Check the Enabled box to convert the breakpoint to a conditional breakpoint.

Each time the breakpoint is passed the Expression (if present) will be evaluated and if it evaluates to true, it will count as one more pass. When the breakpoint is passed for as many times as specified in the pass count, breakpoint will be hit and the CPU will be stopped.

Display message box when a conditional breakpoint hits  - By default winIDEA displays a message each time a conditional breakpoint is hit. If this is interfering with your operation, you can easily disable the notifications.

 

Warning40x40

Keep in mind that the CPU actually stops each time a conditional breakpoint is passed in order to evaluate the condition and then resumes the CPU.

 

Action - When a breakpoint is hit a Python script may be executed. Enable this option and specify the Python script you wish to execute.

Display message box when a HW BP hits  - A message displayed indicating that an hardware breakpoint has occurred.

 

 

Toolbar

EditorBreakpointButton

Toggle Breakpoint

Set a breakpoint or clear an existing breakpoint while you have the source line/disassembly line selected.

1. Click Toggle Breakpoint button in the toolbar.

2. Press F9 key.

 

Context menu enables as well to Set Breakpoint / Disable / Clear Breakpoint.

EditorBreakpointsdialogButton

Breakpoints

Open dialog Execution Breakpoints.

EditorToggleHDBPButton

Toggle Hardware Breakpoints

Set a Hardware breakpoint or disable an existing hardware breakpoint.

 

 

Disabling and clearing/deleting breakpoints

winIDEA differentiate between disabled or cleared/deleted breakpoint:

Cleared breakpoints

Disabled breakpoints

Deleted

Still visible, but do not execute

Have to be set again

Can be enabled again

Can not be found again

Can be used as a bookmark

 

Depending on the focused window, winIDEA will:

  • Editor Window: Set a breakpoint on a source line, which will later be resolved to a matching object code address.
  • Disassembly Window: Set a breakpoint on a specific object code address.

 

 

Right click to copy the link address Hardware Execution Breakpoints

On-chip debug logic is used to set the breakpoints with appropriate qualifiers, which is automatically done by winIDEA. Most microcontrollers in use today offer 4 or more hardware breakpoints for this purpose, which is usually enough for basic debugging purposes.

Hardware Execution Breakpoints offer the best debug experience, as they make the debugging fast and responsive.

 

Warning40x40

Note that some high level debugging functionalities, such as source step, need one hardware breakpoint to function properly. To overcome the problems with these functionalities, winIDEA reserves one hardware breakpoint for high-level debugging. If you are sure you know what you are doing, you can free this breakpoint via option Reserve one breakpoint for high-level debugging in the Debug / Option / Debugging tab.

 

Hardware breakpoints are breakpoints that are already provided by the CPU. The number of hardware breakpoints is limited to four or eight, twelve, etc. depending on the core. The advantage is that they function anywhere in the CPU space, which is not the case for software breakpoints, which normally cannot be used in the FLASH memory, non-writable memory (ROM) or self-modifying code. If hardware breakpoints are selected, only hardware breakpoints are used for execution breakpoints.

 

 

Software Execution Breakpoints

You can use software breakpoints by enabling:

  • Hardware / Use Software Breakpoints option or
  • Core-specific option in the Hardware / CPU Options / <coreID>.

 

Hardware menu  / Use Software Breakpoints

Hardware / CPU Options / <coreID>

UseSWBP
UseSWBP2

 

When using software execution breakpoints, winIDEA will change the object code on the target address and replace it with a special instruction, which stops the CPU execution. Once the breakpoint is hit and you wish to continue the execution, the code is switched to its original state, the instruction is stepped over and the code is again replaced with the breakpoint instruction. While all this is done in the background, you should be aware that:

  • Microcontroller memory is being manipulated each time you interact with the breakpoint, which can amount to a significant number of memory writes. This can put a serious stress on the microcontroller memory, specially internal FLASH which usually has a limited number of guaranteed write cycles.
  • When using software execution breakpoints on an application loaded in FLASH memory, you will notice delays when interacting with these breakpoints. Each time a breakpoint is interacted with, a whole sector of the FLASH memory needs to be erased, modified and programmed back, which takes time. You can speed this up somewhat by enabling Hardware / CPU Options / Debugging / Set/Clear SW BPs before Run, which means that if you set several successive breakpoints, each FLASH sector will be programmed only once (when the CPU is set to run) instead of once for every breakpoint.

 

Warning40x40

Setting a Software Breakpoint means modifying flash memory. Editing flash memory during debug session is disabled on some devices. In this case software breakpoints won't work.

 

Hardware Breakpoints

Open Debug / Hardware Breakpoints dialog to manually configure the hardware breakpoints. The dialog reflects the On-Chip debug logic, therefore you should refer to the microcontroller reference manual provided by the silicon vendor to learn about the specifics and possibilities for your chosen microcontroller.

 

Breakpoint Wizard

There is a simple Wizard available which allows you to configure the hardware breakpoint either as an execution breakpoint or data access breakpoint. Such access breakpoint configuration can be further fine-tuned or multiplied for operation on more addresses manually using the Hardware Breakpoints dialog.

 

 

Right click to copy the link address  Data Access Breakpoints

Data access breakpoints allow you to break program execution when a specific address is read from or written to.

 

Breakpoints-DataAccessBreakpoint

Address - Specify the symbol (e.g. variable) or physical address you wish to monitor:

  • Choose either to cover the entire object (if a symbol is specified) or the end address if you specified a physical address.
  • Select the access type on which you wish to break the execution (read, write, any).
  • Optionally specify the data value on which you wish to break the execution.

 

 

bulb

More resources

hmtoggle_arrow0 Knowledge Base Breakpoints
hmtoggle_arrow0 Breakpoints plugin

 

Copyright© iSYSTEM AG Carl-Zeiss-Str.1 85247 Schwabhausen Germany