2010-06-29 19 views
5

Estoy asumiendo el desarrollo de un conjunto de funciones definidas por el usuario y agregados definidos por el usuario escritos para PostgreSQL, y tengo dificultades para diagnosticar qué causa que el código segmente constantemente el fallo. ¿Alguien sabe si/cómo es posible usar GDB con una UDF escrita en C++? Un par de búsquedas en Google no arrojaron nada. He usado ELOG antes para depurar UDF, pero este proyecto es lo suficientemente complejo como para necesitar algo un poco más poderoso.Depuración PostgreSQL Funciones definidas por el usuario

Gracias, Kevin

Respuesta

2

Usted debe ser capaz de adjuntar gdb a una PostgreSQL corriendo backend- aunque es probable que desee para asegurar su construcción PostgreSQL tiene la depuración de símbolos dejados en él para hacer que comprensible. Si lo hace select pg_backend_pid() obtendrá la ID de proceso del backend con la que está tratando, y luego podrá adjuntar gdb (utilizando el modificador --pid o el comando attach). Este enfoque solo es útil si puedes reproducir el problema usando psql, por ejemplo: tener procesos back-end nuevos conectados automáticamente para ser un gdb es ... más difícil. Por ejemplo, puede configurar opciones como post_auth_delay para hacer que postgresql espere después de que la autenticación haya finalizado, dándole la oportunidad de adjuntar el depurador antes de continuar el procesamiento.

Cuestiones relacionadas