Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Debugging PostgreSQL User Defined Functions

Tags:

postgresql

gdb

I'm taking over development of a set of User Defined Functions and User Defined Aggregates written for PostgreSQL, and I'm having difficulty diagnosing what's causing the code to constantly seg fault. Does any one know if/how it's possible to use GDB with a UDF written in C++? A couple of google searches didn't turn up anything. I've used ELOG before to debug UDFs, but this project is complex enough that I need something a little more powerful.

Thanks, Kevin

like image 238
Kevin Avatar asked Nov 06 '22 11:11

Kevin


1 Answers

You should be able to attach gdb to a running postgresql backend- although you'll probably want to ensure your postgresql build has debugging symbols left in it to make that comprehensible. If you do select pg_backend_pid() you'll get the backend's process ID that you're dealing with, and can then attach gdb to it (using the --pid switch or attach command). This approach is only useful if you can reproduce the problem using psql, for example, though: having new backend processes automatically attached to be a gdb is... harder. For example, you can set options such as post_auth_delay to make postgresql wait after authentication has finished, giving you a chance to attach the debugger before it continues processing.

like image 111
araqnid Avatar answered Nov 15 '22 06:11

araqnid