我正在尝试在RHEL上调试apache模块,并且优化正在阻碍。我尝试在EXTRA_CFLAGS
中删除apache_2.2.4/build/config_vars.mk, b
中的“-O2”但没有帮助。 APXS足够复杂(我的perl足够差)我不知道如何弄清楚这个标志是如何设置的。
由于奇怪的事情正在发生,我想关闭所有apache的优化,而不仅仅是我们添加的模块(是的,几个)。
有人知道如何关闭优化器吗? (所以调试器可以很好地工作)。
TIA。
答案 0 :(得分:1)
Marko的答案很接近,但-g只提供调试符号,并且不会禁用优化器(有时候调试时为PITA)。
当我调试我的mod_epp模块时,我使用:
使用以下内容构建apache:./ configure --enable-maintainer-mode --prefix = / usr / local / apache2 使用以下命令构建/安装模块:/ usr / local / apache2 / bin / apxs -Wc,-O0 -c -i mod_epp.c
这导致给予gcc的-O2和-O0,其中-O0获胜。
答案 1 :(得分:0)
再次查看config_var.mk文件
apxs程序将所有这些条目整理为CFLAGS
SHLTCFLAGS CFLAGS NOTEST_CPPFLAGS EXTRA_CPPFLAGS EXTRA_CFLAGS
你的-O2必须在其中一个。
另外,我的config_var.mk位于我知道的RHEL5机器上的/usr/lib/httpd/build/config_vars.mk中
答案 2 :(得分:0)
mod_auth_foo.c: ${APXS} "-Wc,${AM_CFLAGS} ${DEFAULT_INCLUDES} ${CFLAGS}" -c mod_auth_foo.c ${AM_LDFLAGS} ${mod_auth_foo_LDFLAGS} ${mod_auth_foo_LIBADD}
是我在Makefile.am
中用于apache模块的内容,这可以正确传播我通过-O0 -ggdb3
设置的configure CFLAGS="-O0 -ggdb3"
。生成的make输出将是
/usr/lib64/apr-1/build/libtool --silent --mode=compile gcc -prefer-pic -fmessage-length=0 -O2 -Wall -D_FORTIFY_SOURCE=2 -fstack-protector -funwind-tables -fasynchronous-unwind-tables -g -fPIC -Wall -fno-strict-aliasing -DLDAP_DEPRECATED -DLINUX=2 -D_REENTRANT -D_GNU_SOURCE -pthread -I/usr/include/apache2 -I/usr/include/apr-1 -I/usr/include/apr-1 -D_FILE_OFFSET_BITS=64 -D_REENTRANT -Wall -Waggregate-return -Wmissing-declarations -Wmissing-prototypes -Wredundant-decls -Wshadow -Wstrict-prototypes -Winline -Wformat=2 -pipe -I.. -I.. -O0 -ggdb3 -c -o mod_auth_foo.lo mod_auth_foo.c && touch mod_auth_foo.slo
,看起来很正确。
无需修改Apache文件。
答案 3 :(得分:-3)
如果添加'-Wc,-g'参数,它应该足以进行调试。