# Debugging¶

Debugging in Spyder is supported through integration with the enhanced ipdb debugger in the IPython Console. This allows breakpoints and the execution flow to be viewed and controlled right from the Spyder GUI, as well as with all the familiar IPython console commands.

## Debugging with ipdb¶

Spyder offers the following debugging features integrated into the native GUI:

• Multiple means of setting and clearing normal and conditional breakpoints for any line in a file opened in the Editor.
• By selecting the respective option from the Debug menu.
• Through pressing a configurable keyboard shortcut (F12 for normal, or Shift-F12 for conditional breakpoints by default).
• By double-clicking to the left of the line number in an open file.
• With an ipdb.set_trace() statement in your code (after import ing pdb).
• Interactively, using the b command in an ipdb session.
• A Breakpoints pane, listing the file, line, and condition (if any) of every breakpoint defined (Debug ‣ List breakpoints, or Ctrl-Shift-B by default).
• Full GUI control over debugger execution from the Debug menu, Debug toolbar and via configurable keyboard shortcuts, along with the standard ipdb console commands.
• Highlighting of the current frame (debugging step) in the Editor.
• The ability to access and edit local and global variables at each breakpoint through the Variable Explorer, and run many commands in the IPython Console.

For a comprehensive but accessible introduction to pdb/ipdb, consult Steve Ferg’s excellent online guide, Debugging in Python.