Depurador para Postgresql y PgAdmin III

Nota: Existe una nueva versión de este procedimiento aquí

Resulta que estuve haciendo unos procedimientos almacenados para postgresql, y bueno probándolo había uno que no estaba funcionando como esperado, ya había utilizado el depurador para postgresql llamado pldebugger o edb-debugger el cual aunque es limitado, es bueno para depurar esos procedimientos almacenados. Me di a la tarea de instalarlo y se me había olvidado como, resulta que ya lo había hecho una vez pero hace tanto tiempo que se me estaba pasando algo.

Resulta que si estas trabajando en Windows con PgAdmin el ya viene compilado he instalado, solo hace falta activarlo en la base de datos que quieras depurar. Pero en el caso de Linux debes bajarlo y compilarlo tu mismo, (aunque suene extraño ya muchos que usan Ubuntu se les ha olvidado el proceso). Entonces me di a la tarea de descargar el código fuente y empezar a compilar. Tuve varios problemas al compilar y pase un buen rato dándome golpes con este plugin. Hasta que recordé un sitio CSL Cheli Software Libre  que tiene unas especificaciones que se me habían olvidado.

Resulta que el código que esta en el sitio pg_foundry no compila bien, al menos en ubuntu, así que hice lo que recomendó cheli y descargue el que esta en cvs. Los pasos en general fueron los siguientes:

  • Debes saber que versión de postgresql estas corriendo, ya que necesitas descargar el código fuente del postgresql ( si ya no lo tienes) para poder compilar el plugin, esto lo puedes hacer de la siguiente manera: dpkg -l | grep postgresql   , Esto te mostrara que versión de Postgresql estas corriendo.
  • Vas al sitio ftp de postgresql y ahí buscas la versión que tienes y descargas el código fuente.
  • Descomprimes y desempaquetas
  •  Te ubicas en la carpeta donde descomprimiste el paquete y a configure le vas a pasar los mismos parámetros que ya tienes en tu instalación local, pg_config –configure | ./configure
  • Luego, aunque no es necesario, lo compilas con make, asegúrate de no hacer make install. De seguro necesitaras algunas librerías para hacer la compilación, una de ellas es readline que la puedes ubicar en el synaptic.
  • Ya teniendo configurado el postgresql con código fuente procedemos a descargar el código fuente del plugin, esto lo vas a hacer con cvs ( si no lo tienes también lo puedes descargar del synaptic).
  • Entras a la carpeta contrib del postgres que acabas de descargar y ejecutas: cvs -d :pserver:anonymous@cvs.pgfoundry.org:/cvsroot/edb-debugger login , si te pide password solo le das enter, luego haces cvs -d :pserver:anonymous@cvs.pgfoundry.org:/cvsroot/edb-debugger checkout server
  • Te va a descargar el código y va a crear una carpeta llamada server dentro de contrib.
  • entras a la carpeta server, cd server.
  • ahora compilas con make y si todo sale bien le das: sudo make install
  • Debes ubicar donde esta el plugin que make install genero, en mi caso lo puso en /usr/local/pgsql/lib/plugins/plugin_debugger.so
  • Consigues tu archivo de configuración de postgresql, en mi  caso esta en /etc/postgresql/8.4/main/postgresql.conf
  • Ahi vas a modificar la linea que dice shared_preload_libraries = ” por shared_preload_libraries = ‘/usr/local/pgsql/lib/plugins/plugin_debugger’
  • Ahora lo que queda es abrir el pgAdmin y ejecutar el archivo pldbgapi.sql que se encuentra en la carpeta con el código del plugin.
  • Antes de ejecutarlo debes remplazar donde dice $libdir por /usr/local/pgsql/lib en mi caso que es donde se instalo en plugin, Esto lo vas a hacer sobre la base de datos que quieres depurar, o sobre template para que cada vez que crees una base de datos ya cree las funciones de depuración.
  • Ya una vez creado e instalado el plugin abres pgAdmin, te ubicas en una función que quieras depurar y con el botón derecho le das click a Set breakpoint
  • Te va a abrir la siguiente pantalla
  • Ahí esta esperando que se ejecute la función que vas a depurar, una vez que dicha función se ejecute la podrás ver y utilizar las funcionalidades del depurador, como ver el valor de las variables, entrar a funciones, etc.. 

Espero te sirva estas instrucciones, y empieces a depurar tus procedimientos almacenados en postgresql.

You may also like...

  • María José Gámez

    Me extraña que todavía no te haya dado las gracias por tu post, está MUY BIEN. Me ha resultado muy útil seguir el paso a paso. Me voy a poner tu página en mis favoritos.
    GRACIAS.

  • María José Gámez

    Hola de nuevo. He seguido los pasos, todo correcto, pero cuando voy a hacer debug el pgadmin se queda frito, no responde a nada. Pensaba que sería porque lo estaba haciendo desde una máquina remota (no desde el propio servidor), pero acabo de probarlo en el servidor y lo mismo.

    Lo estoy ejecutando en un Ubuntu 12.04. ¿Alguna pista?

    Gracias.

    • Hola Maria Jose, esto lo hice hace tiempo, hoy lo volvì a hacer con las versiones mas recientes, mañana publico el paso a paso. Saludos cordiales.