debugging - funciona - Función Debug PostgreSQL usando pgAdmin
manual de postgresql (3)
Lo recomiendo para habilitar el depurador en el servidor PostgreSQL para depurar la función plpgsql pasando por los códigos usando pgadmin.
Ya he configurado shared_preload_libraries = ''$libdir/plugins/plugin_debugger.dll''
en el pldbgapi.sql
postgresql.conf
, ejecuto pldbgapi.sql
y reinicié el servidor.
Estos pasos deberían haberse ejecutado correctamente y plugin_debugger.dll
debe cargar correctamente, como se puede verificar con el comando show shared_preload_libraries
, y puedo ver la opción de depuración en el menú contextual haciendo clic con el botón derecho en una función en pgAdmin.
Al elegir "Depurar" -> Depurar, aparece una ventana que me permite ingresar los valores para los parámetros de entrada. Pero después de eso, cuando presiono OK
, no responde en absoluto.
¿Alguna idea o me perdí algo en la configuración del depurador en el servidor?
Estoy usando PostgreSQL 8.3 y pgAdmin 1.14
Conocido,
¿Has probado pgAdmin 1.8 para descartar un problema con la interacción PgAdmin 1.14 / PostgreSQL 8.3? Ha pasado un tiempo desde que utilicé 8.3 y para el artículo que escribí, al que te refieres, estaba probando con 1.14 / PostgreSQL 9.1, por lo que podría ser un problema con la interacción con versiones anteriores. Lamentablemente, ya no tengo 8.3 más para probar.
Recuerdo vagamente haber tenido el problema que tuve una vez, pero fue cuando tuve otra biblioteca compartida en mi postgresql.conf además del pldebugger. No recuerdo cuál fue, pero eliminar la otra biblioteca compartida solucionó mi problema.
Espero que algunas de estas sugerencias ayuden, Regina
Tienes que habilitar la depuración en dos lugares. En PGAdmin y en la base de datos en sí. Ese artículo al que hizo referencia hace un trabajo maravilloso al explicarlo, pero había algunos matices.
PGAdmin
Al actualizar su archivo postgresql.conf
para cargar la biblioteca de depuración, estaba ejecutando PGAdmin en Windows para que el archivo estuviera aquí:
C:/Program Files/PostgreSQL/9.4/data/postgresql.conf
Y la ruta al plugin_debugger.dll
era en realidad
$libdir/plugin_debugger.dll
no
$libdir/plugins/plugin_debugger.dll
como se especifica en el artículo. Entonces su postgresql.conf
necesitaría una línea como esta
shared_preload_libraries = ''$libdir/plugin_debugger.dll''
Busque el .dll real si tiene dudas. Si estás en Linux, el archivo que vas a buscar es plugin_debugger.so
. No olvide que cambiar el archivo postgresql.conf
requerirá un reinicio para que el cambio surta efecto.
Base de datos PostgreSQL
Asumiendo que está ejecutando su base de datos PostgreSQL en un servidor Linux, esta esencia hace un excelente trabajo al explicar cómo descargar las dependencias para habilitar la depuración. Asegúrate de ejecutar como root cuando instales.
La parte que es fácil pasar por alto es emitir el comando contra la base de datos real que desea depurar. Para las versiones más nuevas en PostgreSQL todo lo que tendrá que hacer es esto:
CREATE EXTENSION IF NOT EXISTS pldbgapi;
Si eso no arroja un error, deberías ir bien.
Algunas cosas adicionales de la nota:
- Como se mencionó anteriormente, solo puede depurar cuando se ejecuta como una cuenta de súper usuario
- Desde sus documentos , solo puede depurar funciones pl / pgsql. Entonces, si su función dice algo como
LANGUAGE c
PGAdmin ni siquiera mostrará una opción de menú de depuración cuando seleccione la función. Busque algo que tengaLANGUAGE plpgsql
y seLANGUAGE plpgsql
el menú Debug.
Yo tuve el mismo problema. Asegúrese de que la única lib compartida que está cargando en el postgres.conf es el depurador. Nada más. Ni siquiera el generador de perfiles. Si obtiene un error de SSL al intentar depurar una función, vuelva a conectarse al servidor.