17 de mayo de 2016

39. Debugging con PDB

Debugging con PDB

El proceso de ejecutar, sentencia a sentencia un programa para poder localizar posibles fallos se denomina debugging (eliminar errores) . Esta forma de trabajar a veces es conveniente en nuestro programas para encontrar código que no se ejecuta correctamente.
En Python tenemos un módulo, pdb, usado para tal fin. Por problemas de incompatibilidad con Python 2.7 en Ubuntu es mejor usar el módulo alternativo Pdb++ (que cargará también pdb). Antes de seguir damos la receta para comprobar si está instalado y, si no, hacerlo.
  1. Abrir un terminal y acceder como root.
  2. Escribir pip freeze
    1. Si se lanza un error es que hay que instalar una extensión para python: apt-get install python-pip
  3. Una vez instalado, comprobar en la lista si está el módulo pdbpp
  4. Si no lo está, instalarla con pip install pdbpp
Bien, suponiendo que esté instalado, ya podemos probar el módulo. Imagina el siguiente programa, que suma números. Al programa, se le han añadido el módulo pdb y la sentencia pdb.set_trace() que "para" el programa y muestra la línea que se está ejecutando en ese momento.
# -*- coding:utf-8 -*-

import pdb 

pdb.set_trace()

for i in range(10):
    print i + (i * 2)
Se utiliza siempre pdb.set_trace() en el punto del programa donde se quiere testear su funcionamiento.
Las órdenes más comunes para avanzar son:
  • n (next) ejecuta el código mostrado y salta a la siguiente línea de tu archivo.
  • s (step) te mostrará paso a paso el camino recorrido hasta poder ejecutar la siguiente línea de tu archivo
  • c (continue) ejecuta el archivo hasta encontrar un punto donde se termina.
  • q (quit) abandonar el debugger
Y además, permite "interactuar" con las variables del programa; intenta, en vez de introducir los comandos anteriores la orden type(i)
  1. Para más usos de pdb , acceder a la documentación (interesantes el debugging de programas desde la línea de comandos).
  2. Documentación del módulo cargado pdbpp que sustituye al antiguo pdb con métodos y funcionalidad ampliada.
NOTA: cuando se pueda, revisar más a fondo este módulo nuevo.

No hay comentarios:

Publicar un comentario