1. nginx源码编译,依赖于pcre和zlib

  2. 下载源码后,通过./configure --help可以查看编译选项,为了增加gdb调试信息,使用./configure --with-cc-opt='-g -o0'和make CFLAGS="-g -o0" 

  3. 为了方便调试可以启动一个worker进程

  4. nginx对gdb也有辅助支持,用debug_points配置项:stop或者abort,表示在遇到严重错误的时候,

    ngingx的进程可以stop住。如果是abort,可以设置生成core文件。

  5. 关于宏,宏默认是直接替换的,如果在编译的时候,将-g 改为--ggdb3可以保留宏,但是增大了可执行二进制文件。info macro NGX_OK/ macro expand NGX_OK/p NGX_OK。如果info 没有找到,可以list文件加载一下后,再去执行info命令。

  6. 编译的时候可以增加--with-debug,以便生成调试信息。

  7. 配置文件的错误日志: error-log logs/error.log debug_http或者其他参数,只打印自己想要的。

  8. strace/pstack:  strace -t -T -o -f -p显示进程调用;pstack显示调用栈。

  9. 一次性获得nginx的全部执行流程:system tap;-finstrument-functions addr2line.sh;

  10. 加桩调试,在代码中嵌入自己的桩函数进行调试。

  11. 自己写代码,封装http报文,构造nginx异常场景来进行观察。