Breakpoints
Breakpoints are special markers that suspend program execution at a specific point. This lets you examine the program state and behavior. Breakpoints can be simple (for example, suspending the program on reaching some line of code) or involve more complex logic (checking against additional conditions, writing log messages, and so on).
Once set, a breakpoint remains in your project until you remove it explicitly, except for temporary breakpoints).
tip
If a file with breakpoints was modified externally, for example, updated through a VCS or changed in an external editor, and the line numbers have changed, breakpoints will be moved accordingly. Note that CLion must be running when such changes are made, otherwise they will pass unnoticed.
Types of breakpoints
The following types of breakpoints are available in CLion:
Line breakpoints: suspend the program upon reaching the line of code where the breakpoint was set. This type of breakpoints can be set on any executable line of code.
Exception breakpoints: suspend the program when the specified exception is thrown. They apply globally to the exception condition and do not require a particular source code reference.
Symbolic breakpoints: suspend the program when a specific function or method are executed.
Line breakpoints statuses
When a debug session hasn't started yet, all line breakpoints are marked the same way:

During a debug session, CLion detects the breakpoints statuses and changes the markers accordingly:
Line breakpoint is successfully resolved by the GDB or LLDB debugger using the provided debug symbols. Such breakpoint can be hit during execution:
Line breakpoint is invalid, which means it can’t be resolved by GDB or LLDB and will never be hit. This can happen when the breakpoint is located out of the executable code or some debugging symbols are missing. CLion detects such situations accurately and updates the icon on the fly (for example, the status will change when you load the proper debug symbols).
Set breakpoints
Set line breakpoints
Click the gutter at the executable line of code where you want to set the breakpoint. Alternatively, place the caret at the line and press Ctrl+F8.
While in disassembly view, you can set breakpoints the same way you do in the source code. See Breakpoints in disassembly.
Set exception breakpoints
Click View Breakpoints
in the left part of the Debug tool window or press Ctrl+Shift+F8.
In the Breakpoints dialog, press Alt+Insert or click
, and select Exception Breakpoints or JavaScript Exception Breakpoint.
Set symbolic breakpoints
Click View Breakpoints
in the left part of the Debug tool window or press Ctrl+Shift+F8.
In the Breakpoints dialog, press Alt+Insert or click
, and select Symbolic Breakpoints.
Specify the symbol name and select whether you want this breakpoint to be hit in all modules, or in a specific module only.
Manage breakpoints
Remove breakpoints
For non-exception breakpoints: click the breakpoint in the gutter.
For all breakpoints: from the main menu, select Run | View BreakpointsCtrl+Shift+F8, select the breakpoint, and click RemoveDelete.
To avoid accidentally removing a breakpoint and losing its parameters, you can choose to remove breakpoints by dragging them to the editor or clicking the middle mouse button. To do this, go to Settings/Preferences | Build, Execution, Deployment | Debugger and select Drag to the editor or click with middle mouse button. Clicking a breakpoint will then enable or disable it.
Mute breakpoints
If you don't need to stop at your breakpoints for some time, you can mute them. This allows you to resume normal program operation without leaving the debugger session. After that, you can unmute breakpoints and continue debugging.
Click the Mute Breakpoints button
in the toolbar of the Debug tool window.
Enable/disable breakpoints
When you remove a breakpoint, its internal configuration is lost. To temporarily turn an individual breakpoint off without losing its parameters, you can disable it:
For non-exception breakpoints: right-click it and set the Enabled option as required. You can also toggle them with the middle mouse button if removing breakpoints is not assigned to it.
For all breakpoints: click View BreakpointsCtrl+Shift+F8 and check/uncheck the breakpoint on the list.
Move/copy breakpoints
To move a breakpoint, drag it to another line.
To copy a breakpoint, hold Ctrl and drag a breakpoint to another line. This creates a breakpoint with the same parameters at the destination.
Configure breakpoints' properties
Depending on the breakpoint type, you can configure additional properties which allow you to tailor its operation for specific needs.
Basic breakpoint properties are available via intentions. Place the caret at the line with the breakpoint and press Alt+Enter:
More breakpoint options are available via the right-click context menu:
Click More or press Ctrl+Shift+F8 to access the Breakpoints dialog:
Breakpoints' properties
Productivity tips
- Use breakpoints for debug printing
Use non-suspendinglogging breakpoints (sometimes referred to as watchpoints in other debuggers) instead of inserting print statements in your code. This provides a more flexible and centralized way of handling debug log messages.
- Set logging breakpoints more quickly
To set a non-suspendinglogging breakpoint, hold Shift and click the gutter. This will not suspend the program execution and instead log a message like
Breakpoint reached
. If you want to log some expression that is in front of you in the editor, select it before holding Shift and clicking the gutter.- Add breakpoint descriptions
If you have many breakpoints in your project, you can add descriptions to breakpoints for ease of search. To do this, right-click a breakpoint in the Breakpoints dialog Ctrl+Shift+F8 and select Edit description from the menu. Now when you start typing the breakpoint name, it gets the focus.
- Group breakpoints
You can organize breakpoints into groups, for example, if you need to mark out breakpoints for a specific problem. To do this, in the Breakpoints dialog Ctrl+Shift+F8, select a breakpoint you want to place in a group and select Move to group from the menu.
- Jump to source
To jump from the Breakpoints dialog to the line of code where the selected breakpoint is set, press F4.