- nginx源码编译,依赖于pcre和zlib
- 下载源码后,通过./configure --help可以查看编译选项,为了增加gdb调试信息,使用./configure --with-cc-opt=‘-g -o0‘和make CFLAGS="-g -o0"
- 为了方便调试可以启动一个worker进程
- nginx对gdb也有辅助支持,用debug_points配置项:stop或者abort,表示在遇到严重错误的时候,
ngingx的进程可以stop住。如果是abort,可以设置生成core文件。
- 关于宏,宏默认是直接替换的,如果在编译的时候,将-g 改为--ggdb3可以保留宏,但是增大了可执行二进制文件。info macro NGX_OK/ macro expand NGX_OK/p NGX_OK。如果info 没有找到,可以list文件加载一下后,再去执行info命令。
- 编译的时候可以增加--with-debug,以便生成调试信息。
- 配置文件的错误日志: error-log logs/error.log debug_http或者其他参数,只打印自己想要的。
- strace/pstack: strace -t -T -o -f -p显示进程调用;pstack显示调用栈。
- 一次性获得nginx的全部执行流程:system tap;-finstrument-functions addr2line.sh;
- 加桩调试,在代码中嵌入自己的桩函数进行调试。
- 自己写代码,封装http报文,构造nginx异常场景来进行观察。
时间: 2024-10-12 12:30:26