nginx编译和调试
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了nginx编译和调试相关的知识,希望对你有一定的参考价值。
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异常场景来进行观察。
以上是关于nginx编译和调试的主要内容,如果未能解决你的问题,请参考以下文章
Nginx编译配置脚本篇(10)- Makefile相关脚本