<type>documentation</type>
<domain>debug</domain>
<id>debugger</id>
<title>Debugger</title>
<date>$Date$</date>
<version>$Revision$</version>
<product>all</product>

~~~if WING101:
Wing's debugger can be used to locate and fix bugs in Python code, and as a way
to step through and better understand how the code works.
~~~

~~~if WINGPER:
Wing Personal's debugger provides a toolset for rapidly locating and
fixing bugs in single and multi-threaded Python code.  It supports breakpoints, 
stepping through code, and inspecting and changing stack or module data.
~~~

~~~if WINGPRO:
Wing Pro's debugger provides a powerful toolset for rapidly locating and
fixing bugs in single and multi-threaded Python code, and in a single
or multi-processing environment.  The debugger supports breakpoints, stepping through
code, inspecting and changing stack or module data, watch points,
expression evaluation, and command shell style interaction with the
paused debug process.
~~~

~~~if not WING101:
There are a number of ways to use Wing's debugger.  Which you use depends on where
your code is running, and how it is invoked:

**Local Stand-Alone Code** -- Wing can debug stand-alone scripts and applications that
run on your local machine and that are launched on demand from within Wing.  For
details, see `Debugger Quick-Start <ref:debug/quick-start>`__.
~~~

~~~if WINGPRO:
**Remote Stand-Alone Code** -- Wing Pro can debug stand-alone code remotely in the same
way as it debugs locally running code.  This is done by configuring a remote host
to which Wing will connect via SSH tunnel.  For details on this, see `Remote Hosts
<ref:proj/remote-hosts>`__.
~~~

~~~if not WING101:
**Local Embedded or Externally Launched Code** -- Wing can also debug code
that runs within a web server, in an embedded Python instance (for example as
a script that controls a larger application), and other code that cannot be
directly launched from the IDE.  For details, see `Debugging Externally
Launched Code <ref:debug/debugging-externally-launched-code>`__.
~~~

~~~if WINGPRO:
**Remote Embedded or Externally Launched Code** -- Finally, Wing Pro can debug
externally launched or embedded code that is running on another host. 
For details, see `Debugging Externally Launched Remote Code <ref:debug/remote-debugging>`__.
~~~

~~~if not WING101:
Because the debugger core is written in optimized C, debug overhead is
relatively low.  However, you should expect your programs to run 
25-50\% slower within the debugger in most code.  Overhead is proportional
to number of Python byte codes executed, so code that does a lot of work in
Python and very little in support libraries will incur more overhead.
~~~

~~~if WEBSITE:
Wing Personal and Wing 101 omit some of the above features.
~~~
