2010-06-29 55 views
5

我正在接管为PostgreSQL编写的一组用户定义函数和用户定义聚合的开发,并且我很难诊断导致代码不断地分段错误的原因。是否有人知道是否可以使用C++编写的UDF来使用GDB?几个谷歌搜索没有出现任何东西。我之前使用过ELOG来调试UDF,但是这个项目非常复杂,所以我需要一些更强大的功能。调试PostgreSQL用户定义的函数

感谢, 凯文

回答

2

你应该能够GDB连接到正在运行的PostgreSQL backend-虽然你可能会想,以确保您的PostgreSQL构建具有调试留在它的符号,这可以理解。如果你做select pg_backend_pid(),你会得到你正在处理的后端的进程ID,然后可以将gdb附加到它(使用--pid开关或attach命令)。但是,只有在使用psql重现问题时,这种方法才有用,例如:将新的后端进程自动附加为gdb更加困难。例如,您可以设置诸如post_auth_delay之类的选项,以在验证完成后使postgresql等待,从而使您有机会在继续处理之前连接调试器。