Inicio rápido de depuración remota de PyCharm

1. Método

1. Configurar el intérprete remoto (simple y eficiente, ¡¡¡muy recomendable!!!)

 Requisitos: Acceda al servidor remoto desde la máquina local a través de SSH. Utilice cualquier puerto predefinido para acceder a la máquina local desde el servidor remoto. Lo mejor es desactivar los servicios de proxy de red como VPN .

Preguntas frecuentes: pycharm se puede ejecutar utilizando un intérprete remoto, pero no se puede depurar

Ejecutar remotamente solo:

python -u /root/.pycharm_helpers/pydev/pydevd.py --multiproc --client 0.0.0. 0 --port 37990

 Error reportado:

Could not connect to 0.0.0.0: 37990
Traceback (most recent call last):
  File "/root/.pycharm_helpers/pydev/_pydevd_bundle/pydevd_comm.py", line 456, in start_client
    s.connect((host, port))
ConnectionRefusedError: [Errno 111] Connection refused
Traceback (most recent call last):
  File "/root/.pycharm_helpers/pydev/pydevd.py", line 2173, in <module>
    main()
  File "/root/.pycharm_helpers/pydev/pydevd.py", line 2055, in main
    dispatcher.connect(host, port)
  File "/root/.pycharm_helpers/pydev/pydevd.py", line 1826, in connect
    self.client = start_client(self.host, self.port)
  File "/root/.pycharm_helpers/pydev/_pydevd_bundle/pydevd_comm.py", line 456, in start_client
    s.connect((host, port))
ConnectionRefusedError: [Errno 111] Connection refused

Análisis de la causa del problema:
Requisitos: Acceda al servidor remoto desde la máquina local a través de SSH, use cualquier puerto predefinido para acceder a la máquina local desde el servidor remoto.

2. Utilice Python para depurar de forma remota la configuración del servidor (intrusión de código, no muy recomendable)

 Seleccione Ejecutar | Editar configuración… en el menú principal. Se abre el cuadro de diálogo Ejecutar/depurar configuración. Tienes que hacer clic en la barra de herramientas y seleccionar pythondebug Server de la lista de configuraciones disponibles.

Ingrese un nombre para la configuración de ejecución/depuración, configúrelo en MyRemoteServer; especifique el número de puerto de la máquina donde se ejecuta el IDE (12345 en este caso) y el nombre de host del IDE (172.20.208.95 en este caso); el servidor de depuración remota utilizará estos parámetros para acceder a él.

De acuerdo con el recordatorio de la interfaz IDE, instale el pydevd-charm correspondiente; ejecute pydevd_pycharm.settrace

Asigne una ruta en la máquina local a una ruta en la máquina remota:

Pasos de uso:

1. Una vez iniciado el IDE, mostrará que está en estado de escucha y luego establecerá un punto de interrupción en Pycharm.

2. Luego ejecute el programa py remoto y ejecútelo usando la línea de comando (no en el IDE, sino en la ejecución remota del comando)

Modifique el archivo de código fuente de la siguiente manera:

import math
#==============this code added==================================================================:
import pydevd_pycharm

pydevd_pycharm.settrace('172.20.208.95', port=12345, stdoutToServer=True,
                        stderrToServer=True)
#================================================================================================
class Solver:

    def demo(self, a, b, c):
        d = b ** 2 - 4 * a * c
        if d > 0:
            disc = math.sqrt(d)
            root1 = (-b + disc) / (2 * a)
            root2 = (-b - disc) / (2 * a)
            return root1, root2
        elif d == 0:
            return -b / (2 * a)
        else:
            return "This equation has no roots"

if __name__ == '__main__':
    solver = Solver()

while True:
    a = int(input("a: "))
    b = int(input("b: "))
    c = int(input("c: "))
    result = solver.demo(a, b, c)
    print(result)

Como se indicó anteriormente, puede ver que este método es intrusivo para el código.

Nota: Si implementa el programa en una ubicación remota, debe cambiar el host local en la configuración de depuración remota a la dirección IP del host donde está instalado Pycharm y cambiar el host local en PycharmRemoteDebug.py a la misma dirección IP.


Utilice la función de implementación de Pycharm para asignar código local y remoto;
cuando se alcanza un punto de interrupción, el programa cliente se encuentra en un estado tentativo;
si el servidor de depuración remota no está activado, el cliente se bloqueará durante la ejecución;
cuando no sea necesario use la depuración remota, asegúrese de no iniciar el programa al importar el módulo PycharmRemoteDebug;

Resumen: Por lo tanto, esta solución debe garantizar que el entorno remoto pueda conectarse activamente al entorno local de su IDE.
 

2. Introducción a los principios de depuración remota.

Si el programa se implementa de forma remota, para obtener el estado de ejecución del programa localmente y realizar la depuración del punto de interrupción, es necesario conectarse al programa y comunicarse; en el proceso de utilizar Pycharm para la depuración remota, Pycharm actúa como un servidor.

Primero, configure Pycharm Run/Debug Configure y especifique algunos atributos del lado de instalación de Pycharm, como la dirección IP y el número de puerto del host donde se encuentra Pycharm.

Luego, inicie la depuración remota de Pycharm. En este momento, Pycharm está en estado de escucha, esperando conexiones de programas que se ejecutan independientemente del IDE.

En segundo lugar, cuando el programa remoto se inicia por primera vez, debe conectarse a Pycharm según la información de configuración en Pycharm Debug Configures.


Finalmente, después de que la conexión sea exitosa, cuando el cliente remoto se ejecuta hasta el punto de interrupción establecido en el Pycharm local, la ejecución del programa se detendrá en el punto de interrupción, y cuando el Pycharm local llegue al punto de interrupción, podrá ver el contenido en ejecución actual. del programa remoto, estado, pila de llamadas y otra información y realizar el seguimiento del siguiente paso y la depuración paso a paso.

El proyecto de código fuente depurado en Pycharm local debe ser coherente con el código fuente del programa que se ejecuta de forma remota.

La configuración de Remote Debug Configure en Pycharm debe garantizar que se pueda conectar de forma remota.

Dado que el cliente remoto utiliza el módulo pydevd proporcionado por Pycharm para conectarse a la depuración remota de Pycharm local, los enlaces de comunicación entre los dos siguen el protocolo personalizado de Pycharm; por lo tanto, no necesitamos preocuparnos por los detalles de ambos extremos cuando Pycharm establece puntos de interrupción y el cliente remoto alcanza el punto de interrupción. En el proceso de implementación y procesamiento, solo necesitamos asegurarnos de que nuestra Configuración de depuración sea válida, luego usar puntos de interrupción para pausar temporalmente el programa cuando sea necesario y analizar el estado actual del programa para descubrir el problema.
 

Supongo que te gusta

Origin blog.csdn.net/JineD/article/details/133187483
Recomendado
Clasificación