Home
»
Key Features of Wing IDE
»
"The debugger just works, and it works well."
-- Joshua J. Kugler, Oct 2010
Wing's multithread-capable debugger can work with all forms of Python code,
whether launched from the IDE, externally by a web server, run as a script in
an embedded copy of Python, or run on a remote host. The debugger works with
many Python versions and also includes special support for Zope,
Plone, and Django, and it can be used with
Turbogears, wxPython,
and many other libraries.
Catch Exceptions and Set Breakpoints
|
Wing will stop the debug process and report unhandled exceptions as they occur
in your code. Breakpoints can also be set to stop execution of the debug
process. Wing supports regular and conditional breakpoints,
and allows enabling/disabling breakpoints or ignoring them for a selected
number of hits. A breakpoint manager provides an overview and easy way to jump
to the code where breakpoints have been set. Conditional breakpoints can be
very convenient in isolating the particular cases that bring out a bug in code
before the exception actually occurs, even if that code is executed many times
before your problem case is reached. |
Step Through Code and Inspect Data
|
Once the debug process stops at a breakpoint or exception, the debugger allows
stepping through code one line a time, optionally into a call or out of the
current stack frame. While the debugger is paused, hovering the mouse over a
symbol on the source editor will display the current value of that symbol in
the debug process, when it is defined. The Stack Data tool provides a
graphical way to view local and global data. Wing IDE also provides a module
data view and a tool for watching values and expressions. Values can be
watched by symbolic name or by object reference. Watching a value by object
reference is a convenient way to keep it handy even after leaving the scope
where it was bound to a symbol. Data displayed in the
GUI in Wing can be changed, causing the value to be updated within the
debug process. |
Interactive Debug Probe
|
The Debug Probe allows running interactive Python commands, with
auto-completion and call tips, in the context of the current stack frame in
your paused debug process. This tool is unmatched for complex debugging, and a
great way to try out code in context while crafting a bug fix. Wing also uses
live runtime state to fuel auto-completion and call tips in the editor, when the code
is on an active stack frame. |
Debugging Remotely
|
Wing provides a module that can be imported into any Python code to
initiate debugging with the IDE.
This allows debugging code that is running within a web server or web framework,
and code in a Python interpreter that has been embedded into a larger
application. It is also possible to configure a debug process to connect
over the network to another machine where Wing IDE is running. |
Debug Django Templates
|
Wing IDE can stop at breakpoints and then step through Django Template files.
While debugging a Django Template file, the Stack Data and other debugger tools work
within the template's runtime context. Being able to see the debug position within
the Django template files, rather than working with Python frames in the Django
template engine implementation, makes it easier to understand and debug template
invocations. |
Matplotlib Support
|
Wing's debugger also includes special support for matplotlib, so that plots
update when working interactively in the Python Shell or in the Debug Probe
while the debug process is paused. |