Background description
Sometimes python application code in the local development environment to run very normal, but put on the line after the strange exception, after repeated troubleshooting or can not find the cause of the problem, so it is thought, if the server environment in the single-step tracking debugging is good.
However, installing an IDE on a server system is certainly unrealistic; remote to the server through SSH, although the use pdb
of debugging is feasible, but the operation is more cumbersome, but also not intuitive.
So, can you connect the IDE in the development environment to the server environment and implement the programs that run in the IDE Debug server environment that leverages the development environment? The answer is yes, this is remote Debug.
How Remote Debugging Works
The function of remote debugging is supported in large Ides such as Eclipse, IntelliJ idea, and the principle of implementation is basically the same, which is illustrated by Pycharm.
In the remote debugging mode, the Pycharm (IDE) plays the role of the server side, while the application that runs on the remote computer acts as the client. Because of this, in the remote debugging, you need to set the port in the local development environment and start ide,ide will start listening to the configured port, waiting for the client connection request; How does the application on the remote computer establish a communication connection with the IDE?
For the remote debugging feature, Pycharm provides a pydevd
module that exists in pycharm-debug.egg
the form of the Pycharm installation path. After the remote computer installs the library file, it can then invoke the pydevd.settrace
method, which specifies the IP address and the listening port number of the machine where the IDE is located, to establish a connection to the IDE, and once the connection is established, you can step through the remote computer's programs in the IDE.
Configuration method for remote debugging 1, installing on a remote computer
pydevd
Module
First, the files are found in the Pycharm installation path of the local development environment pycharm-debug.egg
(if the remote computer is running Python3, it is required pycharm-debug-py3k.egg
);
Then, pycharm-debug.egg
copy the files to the remote computer and add them to the reference path on the remote computer in pycharm-debug.egg
several ways:
easy_install pycharm-debug.egg
Install with command (PIP command cannot be installed, only use Easy_install)
- To be
pycharm-debug.egg
added to PYTHONPATH
or sys.path
:import sys; sys.path.append(‘/home/leo/app-dependancies/pycharm-debug.egg‘)
- Unzip to
pycharm-debug.egg
pydev
Copy the folder to the remote application directory
Finally, on the remote computer's python command line input import pydevd
, if there is no error, the pydevd
module installation is successful.
2, in the local development environment Pycharm in the monitoring configuration
The configuration instructions in Pycharm are as follows:
- "Run", "Edit configurations"
- "Add New Configuration", "Python Remote Debug"
- Fill in
Local host name
and Port
, which refers to the local Local host name
development environment of the IP address, and Port
then fill in a random more than 10000; it is important to note that because the remote computer needs to be connected to the local development environment, the local IP address should be guaranteed to be accessible remotely
- "Apply" and "OK"
3. Configuring mapping Mapping 4 in the pycharm of the local development environment, inserting code in the application of the remote computer
Insert the following code into the application of the remote computer.
import pydevdpydevd.settrace(‘100.84.48.156‘, port=31235, stdoutToServer=True, stderrToServer=True)
Where the IP address and port number are consistent with the listening configuration in Pycharm.
5. Start in Pycharm
Debug Server
"Run", "Debug ...", select the remote debugging configuration item that you just created, and the Debug Console
following information is displayed:
for process connection...Use the following code to connect to the debugger:import pydevdpydevd.settrace(‘100.84.48.156‘, port=31235, stdoutToServer=True, stderrToServer=True)
This indicates that it Debug Server
has been started and is in a listening state.
6. Start the application on the remote computer
When you start an application on a remote computer, a pydevd.settrace
communication connection is established with the Pycharm in the local development environment when the statement is executed, and you can then step through the local IDE.
It is important to note that the local development environment must ensure that the IP address and port number are accessible from the remote computer, otherwise the connection cannot be established.
$ telnet 100.84.48.156 31235Trying 100.84.48.156...telnet: Unable to connect to remote host: Connection refused$ python devicedectector.pyCould not connect to 100.84.48.156: 31236Traceback (most recent call last): File "/usr/local/lib/python2.7/dist-packages/pycharm-debug.egg/pydevd_comm.py", line 478, in StartClient s.connect((host, port)) File "/usr/lib/python2.7/socket.py", line 224, in meth return getattr(self._sock,name)(*args)error: [Errno 111] Connection refused
Remote debugging of Python using Pycharm