Los errores en el código se conocen como “bugs”. En programación lo más probable es que al códificar se cometan errores, la mayoría de las veces, serán errores simples, como errores tipográficos. Pero dado que las computadoras son literales, incluso los errores de tipo impiden que el código funcione según lo previsto. El proceso de corregir los errores en la programación se conoce como depuración.

En este caso, Python llega con su propio depurador incorporado pdb. Se puede utilizar pdb en línea de comando o incorporarlo como un módulo. El nombre, pdb es la abreviatura de “Python Debugging” por las siglas en inglés.

En este artículo, se familiarizará con los conceptos básicos del uso de pdb. Específicamente, revisaremos lo siguiente:

  • Comenzando pdb con REPL
  • Comenzando pdb con línea de comando
  • Agregar puntos de interrupción en pdb
  • Crear un punto de interrupción con set_trace()
  • Uso de la incorporación de breakpoint()

Si bien pdb es útil, la mayoría de editores de Python tiene depuradores con más funciones. Encontrará que el depurador de PyCharm o WingIDE tiene muchas más funciones, como autocompletar, resaltar sintaxis y una pila gráfica de llamadas.

Sin embargo, hay momentos en lo que es posible que no tenga el IDE de Python, por ejemplo, cuando está depurando en forma remota en un servidor. Es en esos momentos en que pdb resultará especialmente útil.

Comenzando pdb con REPL

La mejor manera de comenzar es tener un código el cuál se desea ejecutar en pdb. Siéntase libre de usar su propio código o un ejemplo de código de otro artículo en este blog.

O puede crear el siguiente código en un archivo llamado debug_code.py

Hay varias formas de empezar con pdb y utilizarlas en el código. Para este ejemplo, utilizaremos el terminal. Luego vamos a la carpeta donde se guardó el código.

Ahora iniciamos Python en el terminal. Esto le dará la REPL de Python donde se puede incorporar el código y ejecutar el depurador, pdb. Así es cómo se visualiza:

Para ejecutar pdb contra su código, debe usar pdb.run() y decirle qué hacer. En este caso, se pasa debug_code.looper(5) como una cadena. Cuando haga esto, el módulo de pdb transformará la cadena en una llamada a la función real debug_code.looper(5).

En este caso, no hubo excepciones o puntos de interrupción establecidos, por lo que él código funcionó perfectamente y terminó la ejecución.

Comenzando pdb en la línea de comando

Una forma alternativa de comenzar con pdb es a través de la línea de comando. El proceso para comenzar pdb de esta manera es similar al método anterior. Aún se requiere abrir el terminal e ir a la carpeta donde guardó el código.

Pero en lugar de ejecutar Python, ejecutará el siguiente código:

Cuando ejecuta pdb de esta forma, la salida será diferente:

¡El depurador terminó de ejecutar todo su código y luego comenzó de nuevo desde el principio! ¡Eso es útil para ejecutar su código varias veces! Si no desea volver a ejecutar el código, puede escribir exit para salir del depurador.

Agregars puntos de interrupción en pdb

Un punto de interrupción es una ubicación en su código donde desea que se detenga su depurador para que pueda verificar los estados variables. Lo que esto le permite hacer es inspeccionar la pila de llamadas , que es un término elegante para todas las variables y argumentos de función que están actualmente en la memoria.

Si tiene PyCharm o WingIDE, tendrán una forma gráfica de permitirle inspeccionar la pila de llamadas. Probablemente podrá pasar el mouse sobre las variables para ver en qué están configuradas actualmente. O pueden tener una herramienta que enumera todas las variables en una barra lateral.

Agreguemos un punto de interrupción a la última línea de la looper(), que es la línea 10.

Para establecer un punto de interrupción en el depurador pdb, puede usar el comando break o b seguido del número de línea en el que desea dividir:

Crear un punto de interrupción con set_trace()

El depurador de Python le permite importar el módulo pbd y agregar un punto de interrupción a su código directamente, así:

Ahora, cuando ejecute este código en su terminal, se iniciará automáticamente pdb, cuando llegue a la set_trace(), llamada de función:

Esto requiere que agregue una buena cantidad de código adicional que deberá eliminar más adelante. También puede tener problemas si olvida agregar el punto y coma entre la importación y la llamada al pdb.set_trace()

Para facilitar las cosas, los desarrolladores principales de Python agregaron lo breakpoint() que equivale a escribir import pdb; pdb.set_trace().

Uso de la función breakpoint()

A partir de la versión Python 3.7, se puede utilizar la función breakpoint()

El siguiente es una actualización al código con el uso de breakpoint().

Ahora, cuando ejecute esto en la terminal, pdb se iniciará exactamente como antes.

Otro beneficio del uso breakpoint() es que muchos IDE de Python reconocerán esa función y pausarán automáticamente la ejecución. Esto significa que puede usar el depurador incorporado del IDE en ese punto para realizar su depuración. Este no es el caso si utiliza el método set_trace().

Conclusión:

Poder depurar su código con éxito requiere práctica. Es genial que Python le proporcione una forma de depurar su código sin instalar nada más. Encontrará que usar breakpoint() para habilitar puntos de interrupción en su IDE también es bastante útil.

En este artículo aprendiste sobre lo siguiente:

  • Comenzando pdben el REPL
  • Comenzando pdben la línea de comando
  • Crear un punto de interrupción con set_trace()
  • Agregar puntos de interrupción en pdb
  • Uso de la incorporada en breakpoint()

Debes ir y tratar de usar lo que has aprendido aquí en tu propio código.


Este artículo se encuentra basado en Python 101 – Debugging Your Code With pdb.

Python: Depuración del código con pdb
Si te gusto, comparte ...Email this to someone
email
Share on Facebook
Facebook
Tweet about this on Twitter
Twitter
Share on LinkedIn
Linkedin
Etiquetado en:    

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Facebook