nginx调试


配置

        一般来说,默认./configure 生成的makefile文件都将带上-g选项,这对于利用gdb调试nginx是非常必要的,但如果在使用gdb调试nginx时提示“No symbol table is loaded. Use the "file" command.”,则需检查objs/Makefile文件里的CFLAGS标记是否带上了-g选项;另一个值得关注的编译选项是-O0,如果在gdb内打印变量提示“”,则是因为gcc优化导致,我们可以加上-O0选项禁止gcc的编译优化。如何把“-g -O0”应用在nginx上可以有三种方法:

  1. 在进行configure配置时,按如下方式执行:[root@localhost nginx-1.2.0]# CFLAGS="-g -O0" ./configure(已经验证)
  2. 直接修改文件objs/Makefile给其加上“-g -O0”
  3. 在执行make时,按如下方式执行:[root@localhost nginx-1.2.0]# make CFLAGS="-g -O0"

第2、3两种方法是在我们已经执行configure之后进行的,如果之前已经执行过make,那么还需刷新所有源文件的时间戳,以便重新编译nginx:

[root@localhost nginx-1.2.0]# find . -name "*.c" | xargs touch


编译

       nginx的编译步骤如下:

  1. CFLAGS="-g -O0" ./configure --prefix=/styx/home/dk/nginx --with-pcre=/styx/home/dk/pcre-8.3.3(这里是pcre源代码所在目录)
  2. make
  3. make install
完成了上述主要步骤,就可以使用gdb调试nginx了,祝你玩的愉快。

参考:

  • http://lenky.info/ebook/nginx-1/nginx%BA%CB%D0%C4%BD%B2%BD%E2.htm

你可能感兴趣的:(nginx)