如何关闭使用APXS构建的apache模块的优化(-02)

时间:2009-05-28 18:17:52

标签: apache

我正在尝试在RHEL上调试apache模块,并且优化正在阻碍。我尝试在EXTRA_CFLAGS中删除apache_2.2.4/build/config_vars.mk, b中的“-O2”但没有帮助。 APXS足够复杂(我的perl足够差)我不知道如何弄清楚这个标志是如何设置的。

由于奇怪的事情正在发生,我想关闭所有apache的优化,而不仅仅是我们添加的模块(是的,几个)。

有人知道如何关闭优化器吗? (所以调试器可以很好地工作)。

TIA。

4 个答案:

答案 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'参数,它应该足以进行调试。