PyCharm 2018.2 Help

Using Breakpoints

Breakpoints are source code markers used to trigger actions during a debugging session.

Breakpoint types

PyCharm lets you create breakpoints of several types. Each breakpoint type supported by PyCharm addresses different debugging needs and has its own individual settings.

Breakpoints are triggered when the program reaches the specified line of source code, before it is executed. The line of code that contains a set breakpoint, is marked with a red stripe; once such line of code is reached, the marking stripe changes to blue.

py breakpoints

Once set, a breakpoint remains in project until removed. Breakpoints can only be set on executable lines of code. Comments, declarations of methods, and empty lines are not valid locations for breakpoints.

PyCharm enables you to set the following types of breakpoints:

Temporary line breakpoint

These breakpoints are assigned to lines of source code and are used to target a particular section for debugging. When hit, such breakpoints are immediately removed.

Django Line breakpoints

These breakpoints are assigned to the lines of the Django templates, and can only be set on the lines that contain Django tags. Plain HTML lines in Django templates are not valid location for the Django line breakpoints.

py breakpoints Django

Django line breakpoints are triggered when the corresponding tags are rendered by the Django template engine. Refer to the section Debugging Django Templates for details.

Exception breakpoint

PyCharm provides exception breakpoints for Python, Django, and JavaScript.

Exception breakpoints are triggered when the specified exception is thrown. Unlike the line breakpoints, which require specific source references, exception breakpoints apply globally to the exception condition, rather than to a particular code reference.

Depending on the type of processing an exception, the debugging can break when a process terminates with an exception, or as soon as an exception occurs.

Django exception breakpoints enable suspending the program execution when a Django template error occurs (exceptions TemplateDoesNotExist orVariableDoesNotExist), if such a breakpoint is enabled in the Django exception breakpoints tab of the Breakpoints dialog.

JavaScript breakpoints

JavaScript breakpoints are the line breakpoints assigned to particular lines of JavaScript source code. They can be set in *.html and in *.js files, and are used to target a particular section of code for debugging.

Breakpoints icons and statuses

When a breakpoint is set, the editor displays a breakpoint icon in the gutter area to the left of the affected source code. A breakpoint icon denotes status of a breakpoint, and provides useful information about its type, location, and action.

The icons serve as convenient shortcuts for managing breakpoints. Clicking an icon removes the breakpoint. Successive use of Alt - click on an icon toggles its state between enabled and disabled. The settings of a breakpoint are shown in a tooltip when a mouse pointer hovers over a breakpoint icon in the gutter area of the editor.

python breakpoints

The table below summarizes the possible breakpoint states:

StatusLine
Python / Django/ JavaScript
Temporary LineException
Python / Django / JavaScript
Description
Enableddb set breakpointbreakpointTemporaryicons debugger db exception breakpoint svgShown at design-time or during the debugging session.
Disabledicons debugger db disabled breakpoint svgicons debugger db disabled breakpoint svgicons debugger db disabled exception breakpoint svgIndicates that nothing happens when the breakpoint is hit.
Conditionally disableddb dep line breakpointdb dep line breakpointicons debugger db exception breakpoint svgThis state is assigned to breakpoints when they depend on another breakpoint to be activated.

When the button icons debugger muteBreakpoints svg is pressed in the toolbar of the Debug tool window, all the breakpoints in a project are muted, and their icons become grey: muted breakpoint.

Last modified: 14 July 2018

See Also