CLion 2018.1 Help

Using Watchpoints

Watchpoints (sometimes referred to as data breakpoints) are helpful when you need to focus on a particular variable and its behaviour throughout the program execution. By using watchpoints in CLion, you can force your program to pause (and/or log to console) whenever the variable in question is being accessed.

Setting up a watchpoint

  1. Pick a variable or expression from those already added to Watches, right-click it and choose Add Watchpoint:
    cl addwatchpoint
  2. Configure your watchpoint via the pop-up dialog:
    cl watchpointparams
    To access additional properties, click More Ctrl+Shift+F8 or select Run | View Breakpoints from the main menu:
    cl watchpointsettings
    EnabledSelect or clear this checkbox to enable or disable the watchpoint.
    SuspendIf this option is selected, the program's execution will stop at the event specified in the Access Type field. If you clear this checkbox, the program will not stop at the watchpoint hit, but any associated actions (e.g., logging) will still be performed.
    Log to consoleSelect these checkboxes to log the Breakpoint hit message or the watchpoint's stacktrace to console. This is useful if you want to analyze the changes of a variable without stopping the program's execution.
    Remove once hitSet this option to ensure that the watchpoint is removed after being hit once. This is helpful when you need to find the first occurrence of a watchpoint event.
    Disable until breakpoint is hitThis option disables the current watchpoint until some other breakpoint is encountered.
    Access TypeChoose the type of access that will trigger the watchpoint: Read, Write, or Any.

Using a watchpoint in debugging

With the watchpoint set and configured, you can resume debugging to monitor accesses to the chosen variable. If suspending is enabled, the program stops when the watchpoint is hit, and CLion highlights the corresponding code line. If logging to console is enabled as well, the output is shown in the Console tab:
cl watchpointhit
The watchpoint's icon is different from the icon of a regular breakpoint (there is an 'eye' on it). Hover the mouse over it to view the pop-up message with details of the current watchpoint hit:
cl watchpointhit eyemessage
Now you have the variable behaviour isolated from the rest of the program flow. You can remove the watchpoint and use stepping techniques or create more breakpoints to analyze the actual cause of the problem.
Last modified: 7 May 2018

See Also