Nginx原码远程调试

VMwear安装Ubuntu 22.xx LTS

20下载安装步骤

Ubuntu Server 22.04.3 Download

20与22安装步骤基本差不多,开始有些页面不一样,按顺序往下走就行。

对Ubuntu进行一些配置

#1修改root密码
sudo passwd root

#2设置远程可登录root
su
vim /etc/ssh/sshd_config
Port 22
PermitRootLogin yes			# 允许root直接登录
PermitEmptyPasswords no	

# 3重启服务
systemctl restart ssh

# 4关闭防火墙,减少后面开端口不必要的麻烦
ufw disable

# 5安装net-tools查看ip。(或者使用ip addr show)
apt-get update
apt-get install net-tools
ifconfig

# 6重启Ubuntu
reboot

安装需要的软件

sudo apt install build-essential gdb gdbserver cmake
echo 0 | tee /proc/sys/kernel/yama/ptrace_scope
sudo apt install libpcre3 libpcre3-dev libgeoip-dev zlib1g-dev libxslt1-dev libssl-dev

创建普通C语言工程,配置Clion里面Toolchains并测试

创建纯C工程就按照正常步骤。
配置Toolchains
settings > Toolchains > add Remote Host
配置Credentials(主机配置使用root登录,或者使用密钥)后其它自动识别

下载Nginx原码

cd /home
mkdir code && cd code && mkdir nginx 
weget http://nginx.org/download/nginx-1.24.0.tar.gz
tar -zxvf nginx-1.24.0.tar.gz && cd nginx-1.24.0
./configure --prefix=/home/code/nginx/NginxExe --with-debug --with-cc-opt=-'O0'

配置Clion的部署目录并拉取代码

setting  > Deployment > Mappings > (Deployment path: /home/code/nginx-1.24.0)
Deployment > Download from xxx
点击Makefile文件,并点击文件上方Load Makefile Project
取消Load Project弹框的Clean project

setting  > Makefile > (Commands: ./configure --prefix=/home/code/nginx/NginxExe --with-debug --with-cc-opt=-'O0')
删除(Build target: all)
刷新并重新构建看可有问题

配置调试

Clion里面nginx代码做点日志重新构建,并重新生成可执行文件到NginxExe

//在src/event/ngx_events.c里的 
void ngx_process_events_and_timers(ngx_cycle_t *cycle);
//添加日志,并加入断点
ngx_log_debug(NGX_LOG_DEBUG_EVENT,cycle->log,0,"HELLO NGINX CODE !");

//在重新build and insert(选择完点🔨)

修改nginx可执行文件的配置并启动

# 修改nginx配置
vim /home/code/nginx/NginxExe/conf/nginx.conf
error_log  logs/error.log  debug;  #日志输出级别,其它的配置也可以设置
# 启动nginx
/home/code/nginx/NginxExe/sbin/nginx

启动gdbserver

# 查看nginx的PID 带有worker的第一个
ps -ef | grep nginx
gdbserver --attach :5555 PID of nginx
tail -f /home/code/nginx/NginxExe/logs/error.log

再配置Clion里面的Remote Debug

run > Edit Configurations > add Remote Debug
(Debugger: 选择之前配置的toolschains)
(target remote args: 服务器IP:5555)
点击Debug

调用nginx服务进入断点

# 浏览器访问服务器IP,或者
curl http://localhost

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值