我正在尝试分析postgreSQL如何解析查询,并且在一些postgreSQL源代码跟踪嵌入printf()之后,我已经知道查询将被解析为raw_parser的原始解析树,它位于在文件parser.c中。
奇怪的是,我已经在raw_parser中嵌入了一个printf()虚拟对象,在重新安装postgreSQL并执行查询之后,我的printf()虚拟不会打印到屏幕上!
在我出错的地方,有人可以帮助我吗?
提前致谢:D
答案 0 :(得分:1)
如果你使用printf(stderr,“....”),那么你可以在服务器日志中找到结果。不要忘记 - 您不能直接使用服务器。出于调试目的,有一个elog函数 - 就像用于客户端应用程序的printf:
elog(NOTICE, "some text");
格式字符串与printf格式相同 - 但你必须记住,PostgreSQL使用的格式与glibc不同 - 所以你只能显示整数或浮点变量。字符串变量使用的格式不同于C zero finished string。