我想将wal_debug
设置为postgresql.conf
,以便我可以看到预写日志(WAL)发生了什么。
我使用--enable-debug
编译了PostgreSQL:
./configure --prefix=/usr/local/pgsql --enable-nls --with-perl --with-libxml --with-pam --enable-debug
并将其添加到postgresql.conf
wal_debug = on
当我尝试启动postgres时服务器抱怨:
$ pg_ctl start
server starting
FATAL: unrecognized configuration parameter "wal_debug"
我错过了什么?
答案 0 :(得分:3)
配置时,将-DWAL_DEBUG
中的CPPFLAGS
传递给./configure
,例如:
./configure CPPFLAGS='-DWAL_DEBUG'
所有--enable-debug
确实(在Pg中)告诉编译器在每个编译单元中发出一个包含调试信息的附加部分 - 函数参数,局部变量信息等。这个信息允许在产生有用的回溯时生成使用gdb
进行调试,可以更轻松地逐步完成程序等。
其他调试和测试选项由预处理器定义(如WAL_DEBUG
)控制,这些定义在源代码中使用条件编译指令(如#ifdef WAL_DEBUG
)进行测试。其中一些有配置标志,如--enable-cassert
,但对于大多数人来说,你只需要自己传递预处理器标志。
正如dezso所指出的,请参阅: