Nginx二次开发(1.2)安装调试

1.2 安装调试

1)安装依赖库zlib(gzip模块)、pcre(rewrite模块)、openssl(ssl功能)

sudo apt-get install libpcre3 libpcre3-devlibpcrecpp0 libssl-dev zlib1g-dev

2)下载后解压,重命名为nginx

tar xzvf nginx-1.2.2.tar.gz

3)修改nginx/auto/cc/conf文件加上-g参数,让nginx支持gdb调试

ngx_compile_opt="-c"

变为

ngx_compile_opt="-c -g"

变为如下才可以调试宏

ngx_compile_opt="-c -ggdb3"

4)执行configure(我安装目录在/home/user_name)

./configure --prefix=/home/user_name/nginx/

configure 参数说明:

--add-module=PATH        -添加第三方模块,第三方模块由PATH路径指定

--conf-path=         - 在没有给定-c选项下默认的nginx.conf的路径。如果没有指定,默认为/conf/nginx.conf

--group=    - 在nginx.conf中没有指定user指令的情况下,默认的nginx使用的组。如果没有指定,默认为 nobody

--prefix=       - Nginx安装路径。如果没有指定,默认为/usr/local/nginx

--user=                   -在nginx.conf中没有指定user指令的情况下,默认的nginx使用的用户。如果没有指定,默认为 nobody

5)make生成可执行文件

make

可执行文件在/home/user_name/objs/下

6)修改nginx.conf

添加:

daemon off;       #配置为非守护进程启动,否则调试时,执行到判断nginx是否以daemon模式启动时退出调试
master_process off;          #单进程模式,否则默认启动一个master进程、一个worker进程,并且调试时需要切人worker进程


7)启动nginx

sudo ./nginx

8)nginx启动、重启等相关命令

ps aux|grep nginx            查看nginx进程相关信息
kill -QUIT                    主进程号  从容停止nginx
pkill -9 nginx             强制停止nginx
./nginx -s stop                    杀死所有nginx进程
./nginx -s reload      重启


8)生成core崩溃转储文件

ps aux|grep nginx
sudo gcore 15255
sudo ./nginx -s stop


15255是nginx master进程号

ps -aux 查看进程信息

grep 搜索进程名字

9)启动调试

gdb ./nginx core.15255

10)gdb常用命令

list                      #列出源文件
break 213        #在213行打断点
run                     #从main函数开始运行程序
info proc           #查看进程信息
info source       #查看代码所属文件
info break         #查看断点信息
delete breakpoint num             #删除断点,监视的变量也属于断点
whatis 变量名                                    #查看变量类型
ptype 变量/类型                       #查看类型定义
print 变量                                   #查看值
pwd                                                        #查看当前所在目录
continue                                         #从断点开始继续运行
list                       #列出源文件,默认列出10行
break n               #在第n行设置断点
run                       #从main函数开始运行程序
shell                    #切换到终端命令行输入命令,从shell中返回用exit
next                     #相当于VC F10
step                     #相当于VC F11
quit                      #终止gdb
watch  变量    #监视变量
set follow-fork-mode child         #设置调试子进程
bt                         #查看调用堆栈


继续按回车键,执行上一个命令

输出完整字符串setprint element 0

11)启动时错误日志文件目录没有生成?提示找不到日志目录?

mkdir /home/user_name/nginx/logs

vi /home/user_name/nginx/conf/nginx.conf

将#error_log  logs/error.log;

改为error_log  logs/error.log debug;


你可能感兴趣的:(Nginx)