El depurador pdb
(Python Debugger) es una herramienta poderosa que permite a los desarrolladores inspeccionar y controlar la ejecución de programas Python. Con pdb
, puedes establecer puntos de interrupción, inspeccionar variables, ejecutar código línea por línea y mucho más. En esta sección, aprenderemos cómo utilizar pdb
para depurar programas Python de manera efectiva.
- Introducción a pdb
pdb
es el depurador estándar de Python y se incluye en la biblioteca estándar. Proporciona una interfaz interactiva para depurar programas Python.
Características Clave de pdb:
- Puntos de interrupción: Detener la ejecución en una línea específica.
- Inspección de variables: Ver el valor de las variables en cualquier punto de la ejecución.
- Ejecución paso a paso: Ejecutar el código línea por línea.
- Evaluación de expresiones: Evaluar expresiones Python en el contexto actual.
- Iniciando pdb
Puedes iniciar pdb
de varias maneras:
2.1. Desde la línea de comandos
Puedes ejecutar un script Python con pdb
desde la línea de comandos usando la opción -m pdb
:
2.2. Insertando pdb.set_trace()
Otra manera común de iniciar pdb
es insertando pdb.set_trace()
en el código donde deseas comenzar la depuración:
import pdb def mi_funcion(): x = 10 y = 20 pdb.set_trace() # Inicia el depurador aquí z = x + y print(z) mi_funcion()
- Comandos Básicos de pdb
Una vez que pdb
está activo, puedes usar varios comandos para controlar la ejecución del programa:
Comando | Descripción |
---|---|
l o list |
Muestra el código fuente alrededor de la línea actual. |
n o next |
Ejecuta la siguiente línea de código. |
s o step |
Entra en la siguiente función. |
c o continue |
Continúa la ejecución hasta el siguiente punto de interrupción. |
b o break |
Establece un punto de interrupción en una línea específica. |
p o print |
Imprime el valor de una variable o expresión. |
q o quit |
Sale del depurador y termina el programa. |
Ejemplo de Uso de Comandos
import pdb def suma(a, b): return a + b def main(): x = 5 y = 10 pdb.set_trace() # Inicia el depurador aquí resultado = suma(x, y) print(f"Resultado: {resultado}") main()
Cuando el depurador se activa, puedes usar los comandos mencionados para inspeccionar y controlar la ejecución:
> /ruta/a/tu/script.py(10)main() -> resultado = suma(x, y) (Pdb) l 5 def suma(a, b): 6 return a + b 7 8 def main(): 9 x = 5 10 -> y = 10 11 pdb.set_trace() # Inicia el depurador aquí 12 resultado = suma(x, y) 13 print(f"Resultado: {resultado}") 14 15 main() (Pdb) p x 5 (Pdb) n > /ruta/a/tu/script.py(11)main() -> pdb.set_trace() # Inicia el depurador aquí (Pdb) n > /ruta/a/tu/script.py(12)main() -> resultado = suma(x, y) (Pdb) s --Call-- > /ruta/a/tu/script.py(5)suma() -> def suma(a, b): (Pdb) n > /ruta/a/tu/script.py(6)suma() -> return a + b (Pdb) p a 5 (Pdb) p b 10 (Pdb) n > /ruta/a/tu/script.py(12)main() -> resultado = suma(x, y) (Pdb) p resultado 15 (Pdb) c Resultado: 15
- Ejercicio Práctico
Ejercicio
Dado el siguiente código, usa pdb
para encontrar y corregir el error:
def calcular_area(base, altura): area = base * altura / 2 return area def main(): base = 10 altura = 5 pdb.set_trace() # Inicia el depurador aquí area = calcular_area(base, altura) print(f"El área del triángulo es: {area}") main()
Solución
- Ejecuta el script y usa
pdb
para inspeccionar las variables y la ejecución. - Verifica que los valores de
base
yaltura
sean correctos. - Asegúrate de que la fórmula para calcular el área del triángulo sea correcta.
> /ruta/a/tu/script.py(10)main() -> area = calcular_area(base, altura) (Pdb) p base 10 (Pdb) p altura 5 (Pdb) n > /ruta/a/tu/script.py(11)main() -> print(f"El área del triángulo es: {area}") (Pdb) p area 25.0 (Pdb) c El área del triángulo es: 25.0
En este caso, el código es correcto y no hay errores. El área del triángulo se calcula correctamente como 25.0.
Conclusión
En esta sección, hemos aprendido cómo utilizar pdb
para depurar programas Python. Hemos cubierto cómo iniciar pdb
, los comandos básicos para controlar la ejecución y un ejercicio práctico para aplicar lo aprendido. La depuración es una habilidad esencial para cualquier programador, y pdb
es una herramienta valiosa para ayudarte a encontrar y corregir errores en tu código.
Curso de Programación en Python
Módulo 1: Introducción a Python
- Introducción a Python
- Configuración del Entorno de Desarrollo
- Sintaxis de Python y Tipos de Datos Básicos
- Variables y Constantes
- Entrada y Salida Básica
Módulo 2: Estructuras de Control
- Sentencias Condicionales
- Bucles: for y while
- Herramientas de Control de Flujo
- Comprensiones de Listas
Módulo 3: Funciones y Módulos
- Definición de Funciones
- Argumentos de Función
- Funciones Lambda
- Módulos y Paquetes
- Visión General de la Biblioteca Estándar
Módulo 4: Estructuras de Datos
Módulo 5: Programación Orientada a Objetos
Módulo 6: Manejo de Archivos
- Lectura y Escritura de Archivos
- Trabajo con Archivos CSV
- Manejo de Datos JSON
- Operaciones de Archivos y Directorios
Módulo 7: Manejo de Errores y Excepciones
- Introducción a las Excepciones
- Manejo de Excepciones
- Lanzamiento de Excepciones
- Excepciones Personalizadas
Módulo 8: Temas Avanzados
- Decoradores
- Generadores
- Administradores de Contexto
- Concurrencia: Hilos y Procesos
- Asyncio para Programación Asíncrona
Módulo 9: Pruebas y Depuración
- Introducción a las Pruebas
- Pruebas Unitarias con unittest
- Desarrollo Guiado por Pruebas
- Técnicas de Depuración
- Uso de pdb para Depuración
Módulo 10: Desarrollo Web con Python
- Introducción al Desarrollo Web
- Fundamentos del Framework Flask
- Construcción de APIs REST con Flask
- Introducción a Django
- Construcción de Aplicaciones Web con Django
Módulo 11: Ciencia de Datos con Python
- Introducción a la Ciencia de Datos
- NumPy para Computación Numérica
- Pandas para Manipulación de Datos
- Matplotlib para Visualización de Datos
- Introducción al Aprendizaje Automático con scikit-learn