gdb 调试 nginx(附视频)

2021-06-25

记录 gdb 调试 nginx 的工作流程。(对应视频:gdb 调试 nginx


1. 安装

ubuntu 源码编译安装,可以从 nginx 官网 下载安装包。

  • ubuntu 内核版本。
1
2
# uname -r
4.4.0-142-generic
  • nginx 源码安装。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
# 删除旧的。
apt-get autoremove nginx

# 下载安装
wget https://nginx.org/download/nginx-1.20.1.tar.gz
tar zxf nginx-1.20.1.tar.gz
apt-get install libpcre3 libpcre3-dev
cd nginx-1.20.1

./configure --prefix=/usr/local/nginx
vim objs/Makefile
# 修改优化选项 -O ==> -O0
# CFLAGS = -pipe -O0 -W -Wall -Wpointer-arith -Wno-unused-parameter -Werror -g

# 重新编译安装
make && make install
  • nginx 版本号。
1
2
# /usr/local/nginx/sbin/nginx -v
nginx version: nginx/1.20.1

2. 启动 nginx

1
2
3
4
5
6
7
8
# 启动 nginx
/usr/local/nginx/sbin/nginx

# 修改配置
vim /usr/local/nginx/conf/nginx.conf

# 修改配置后程序更新配置
/usr/local/nginx/sbin/nginx -s reload

2.1. gdb 调试

  • 开启调试。
1
2
3
4
5
6
7
8
gdb /usr/local/nginx/sbin/nginx
# 设置 gdb 调试子进程模式。
set follow-fork-mode child
set detach-on-fork off
# 设置断点
b ngx_event_accept
# 运行
r
  • 用 telnet 测试。
1
telnet 127.0.0.1 80

3. 参考