有关 apache 模块的调试的一些小知识,供朋友们学习参考。
在编译apache时,增加-g选项:
# ./configure CFLAGS="-g" --with-included-apr --with-php --with-mysql --with-su***ec --with-mpm=prefork --enable-so --enable-cgi --enable-rewrite --enable-ssl --enable-mime-magic --enable-unique-id --enable-mods-shared=all --enable-ssl=shared --enable-proxy --enable-proxy-connect --enable-proxy-ftp --enable-proxy-http
apache 提供了-X 选项,可以以单进程单线程模式运行
# gdb /usr/local/apache2/bin/httpd
r -X
dir 指定源码路径
或者
# /usr/local/apache2/bin/httpd -X
然后用 gdb 的 attach 命令 attach 上。
模块编译时,就不用指定-g 选项了,因为 configure 时的配置,在apxs中会继承下来。
# /usr/local/apache2/bin/apxs -c ./mod_xxx.c