usar portable para online hacer gui debugger debug como python pdb

portable - ¿Una forma más simple de poner puntos de ruptura de PDB en el código de Python?



python debugger online (10)

Solo una pregunta de conveniencia. He estado un poco mimado con depuradores en IDEs como Visual Studio y XCode. Me parece un poco torpe tener que escribir import pdb; pdb.set_trace() import pdb; pdb.set_trace() para establecer un punto de interrupción (prefiero no importar pdb en la parte superior del archivo ya que podría olvidarlo y dejarlo).

¿Existe una manera más simple de establecer un punto de interrupción en el código Python, tan sencillo y discreto como lo que ves en un IDE?


Así es como usaría pdb en la línea de comandos sin implementar nada en su código fuente (la documentación y otros recursos en línea no hacen un buen trabajo explicando esto a un programador que solo ha usado depuradores visuales en el pasado):

Inicie pdb escribiendo lo siguiente en un intérprete de comandos de shell:

python -m pdb ''python_script''

Este comando inicializa pdb y el depurador pdb se romperá en la primera línea de su python_script y esperará una entrada suya:

(Pdb)

Esta es la interfaz para comunicarse con el depurador. Ahora, puedes especificar tus comandos aquí. Opuesto a usar botones o atajos de teclado en depuradores visuales, aquí usará comandos para derivar los mismos resultados.

Puede ir a la siguiente línea de su código con el comando "n" (siguiente):

(Pdb) n

Al realizar una próxima, se muestra el número de línea y el código específico en la fuente:

> python_script(line number)method name -> current line in the source code

Puede establecer un punto de interrupción especificando un número de línea en su código fuente.

(Pdb) b 50

Aquí, el depurador está configurado para romperse en la línea 50. Si no hay otros puntos de interrupción, el punto de corte en la línea 50 será el primero y podría ser referenciado por el id de punto de interrupción que es 1 en este caso. Si agrega más puntos de ruptura, obtendrán identificadores secuencialmente (es decir, 2, 3, etc.)

Una vez que se establece un punto de interrupción, continuará ejecutando su programa hasta que pdb llegue al punto de interrupción de la siguiente manera:

(Pdb) c

Una vez que llegue a un punto de interrupción, puede ir a la siguiente línea, con el comando n como se describió anteriormente. Si desea examinar los valores de las variables, debe ejecutar el comando de parámetros de la siguiente manera:

(Pdb) p variable_name

Si ya no necesita un punto de interrupción, puede borrarlo pasando la identificación del punto de interrupción con el comando borrar:

(Pdb) clear 1

Finalmente, cuando haya terminado con el depurador puede salir de la ejecución como lo haría con el intérprete de línea de comando de python.

(Pdb) exit()

Espero que esto ayude a cualquiera a comenzar con pdb. Aquí hay una lista de comandos que puede usar con el depurador: pdb para preguntas y respuestas


En los plugins de Atom if Python instalados, puedes escribir '' pdb '' y presionar enter y el fragmento pdb importar y rastrear por ti.

Ya me he acostumbrado a esto ahora que a veces lo escribo incluso si lo estoy editando en vim y esperando a que aparezca el menú desplegable.


En vim, tengo una macro configurada para esto (en mi archivo .vimrc):

map <silent> <leader>b oimport pdb; pdb.set_trace()<esc> map <silent> <leader>B Oimport pdb; pdb.set_trace()<esc>

así que puedo presionar / b (cuando no está en modo Insertar) y agrega un punto de interrupción después de la línea actual, o / B (anote el capital) y pone uno antes de la línea actual.

que parece funcionar bien La mayoría de los otros editores de programadores ''simples'' (emacs, sublimetext, etc.) deberían tener formas similares fáciles de hacer esto.

Editar: De hecho tengo:

au FileType python map <silent> <leader>b oimport pdb; pdb.set_trace()<esc> au FileType python map <silent> <leader>B Oimport pdb; pdb.set_trace()<esc>

que lo activa solo para archivos de origen python. Podría agregar fácilmente líneas similares para javascript o cualquier otro idioma que use.


La forma más sencilla de ejecutar el depurador en el script es solo

pdb your_script.py

Ejecutar pdb en una línea de comandos de Linux da

usage: pdb.py scriptfile [arg] ...


No lo he intentado todavía, pero acaban de implementar un nuevo built-in llamado breakpoint () en Python 3.7, lo que significa que ahora puedes insertar un punto de interrupción con una declaración:

breakpoint()


Puede ejecutar su programa en pdb desde la línea de comandos ejecutando

python -m pdb your_script.py

Rompe en la primera línea, luego podrá agregar un punto de interrupción donde quiera en su código usando el comando break , su sintaxis es:

b (reak) [[nombre de archivo:] lineno | función [, condición]]

Es lo suficientemente flexible como para darle la posibilidad de agregar un punto de quiebre en cualquier lugar.


Puede usar un IDE que admita la depuración de python, o puede consultar la excelente herramienta Winpdb. Que funciona en cualquier plataforma y proporciona instalaciones de depuración gráfica a su secuencia de comandos python.

http://winpdb.org/


Puedes usar:

from pdb import set_trace as bp code code bp() code code


Puedes usar:

  • ala ide
  • eclipse con el complemento pydev
  • pycharms

Todas las anteriores soportan la depuración de python desde dentro de un IDE.


Si no desea configurar puntos de interrupción manualmente cada vez que ejecute el programa (en Python 3.2+), por ejemplo, suponga que quiere crear directamente un punto de interrupción en la línea 3 y detener la ejecución allí:

python -m pdb -c "b 3" -cc your_script.py

La siguiente información puede ayudar:

Si existe un archivo .pdbrc en el directorio de inicio del usuario o en el directorio actual, se lee y se ejecuta como si hubiera sido escrito en el indicador del depurador. Esto es particularmente útil para alias. Si ambos archivos existen, el que está en el directorio de inicio se lee primero y los alias definidos pueden ser anulados por el archivo local.

Modificado en la versión 3.2: .pdbrc ahora puede contener comandos que continúan la depuración, como continuar o siguiente. Anteriormente, estos comandos no tenían ningún efecto.

Nuevo en la versión 3.2: pdb.py ahora acepta una opción -c que ejecuta comandos como si estuvieran en un archivo .pdbrc, vea Comandos del depurador.