Manually Configured Remote Debugging
This section describes the complex process of manually configuring remote debugging with wingdbstub. These instructions are needed only if you cannot use the Remote Hosts feature. In most cases, you will want to follow the much simpler instructions in Debugging Externally Launched Remote Code instead.
Another alternative to consider before getting started is installing Wing on the remote host and using remote display of the IDE via Remote Desktop (Windows), Screen Sharing (macOS), or X Windows (Linux/Unix).
Configuration Steps
- First set up Wing to successfully accept connections from another process within the same machine, as described in section Debugging Externally Launched Code.
- Optionally, alter the Debugger > Listening > Server Host preference to the name or IP address of the network interface on which the IDE listens for debug connections. The default All Valid Interfaces indicates that the IDE should listen on all the network interfaces found on the host.
- Optionally, alter the preference Debugger > Listening > Server Port to the TCP/IP port on which the IDE should listen for debug connections. This value only needs to be changed if multiple copies of Wing are running on the same host.
- Configure any firewall on the system that Wing is running on to accept a connection on the server port from the system that the debug process will run on, or set up an SSH tunnel as described in Manually Configuring SSH Tunneling.
- Install Wing's debugger on the machine on which you plan to run your debug program, using one of the methods described in Manually Installing the Debugger.
-
Transfer copies of all your debug code so that the source files are available on the host where Wing will be running and at least the *.pyc files are available on the remote host.
During debugging, the client and server copies of your source files must match or the debugger will either fail to stop at breakpoints or stop at the wrong place, and stepping through code may not work properly.
You will need to use Samba, rsync, sftp, NFS, or some other file sharing mechanism to keep the remote files up to date as you edit them in Wing.
If files appear in different disk locations on the two machines, Wing can automatically discover the mapping if you add all your source files to your project. See File Location Maps for details.
- On your remote host, copy wingdbstub.py out of the debugger installation and into the same directory as your source files and then add import wingdbstub to your Python source, as described in Debugging Externally Launched Code. You will need to set WINGHOME in your copy of wingdbstub.py to match the location where you unstalled the debugger in step (5).
- In wingdbstub.py on your remote host, set kWingHostPort. The host in this value must be the IP address of the machine where Wing is running. The port must match the port configured with the Debugger > Listening > Server Port preference on the host where Wing is running. If you set up an SSH tunnel in step (4) the host will be 127.0.0.1 and the port will depend on the SSH tunnel that was created.
- Restart Wing and try running your program on the remote host. You should see the Wing debugger status icon change to indicate that a debug process has attached.
Example
For an example configuration, see Manually Configured Remote Debugging Example.
Diagnosing Problems
If you have problems making this work, try setting the kLogFile variable in wingdbstub.py to log additional diagnostic information.
Section Contents
16.1.1. File Location Maps
16.1.1.0. Manually Configured File Location Maps
16.1.1.1. Manually Configured File Location Map Examples
16.1.2. Manually Configured Remote Debugging Example
16.1.3. Manually Installing the Debugger