我正在接管为 PostgreSQL 编写的一组用户定义函数和用户定义聚合的开发,但我很难诊断导致代码不断出现段错误的原因。有谁知道是否/如何将 GDB 与用 C++ 编写的 UDF 一起使用?几个谷歌搜索没有发现任何东西。我以前使用 ELOG 来调试 UDF,但是这个项目太复杂了,我需要一些更强大的东西。
谢谢, 凯文
最佳答案
您应该能够将 gdb 附加到正在运行的 postgresql 后端 - 尽管您可能希望确保您的 postgresql 构建中保留了调试符号以使其易于理解。如果你这样做 select pg_backend_pid()
您将获得正在处理的后端进程 ID,然后可以将 gdb 附加到它(使用 --pid 开关或 attach
命令)。这种方法仅在您可以使用 psql 重现问题时才有用,例如,虽然:让新的后端进程自动附加为 gdb 是......更难。例如,您可以设置 post_auth_delay
等选项。让 postgresql 在身份验证完成后等待,让您有机会在调试器继续处理之前附加调试器。
关于postgresql - 调试 PostgreSQL 用户定义函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3137067/