我正在接管为PostgreSQL编写的一组用户定义函数和用户定义聚合的开发,并且我很难诊断导致代码经常出错的原因。有没有人知道是否可以使用GDB和用C ++编写的UDF?一些谷歌搜索没有发现任何东西。我之前使用ELOG来调试UDF,但是这个项目很复杂,我需要更强大的功能。
谢谢, 凯文
答案 0 :(得分:2)
您应该能够将gdb附加到正在运行的postgresql后端 - 尽管您可能希望确保postgresql构建中包含调试符号以使其易于理解。如果你执行select pg_backend_pid()
,你将得到你正在处理的后端的进程ID,然后可以将gdb附加到它(使用--pid switch或attach
命令)。这种方法仅在您可以使用psql重现问题时才有用,例如:将新的后端进程自动附加为gdb是更难的。例如,您可以设置post_auth_delay
等选项,以便在身份验证完成后使postgresql等待,从而使您有机会在继续处理之前附加调试器。