nginx debug 调试及GDB调试设置

本文介绍了Nginx的多种调试方法,包括配置调试选项、使用gdb直接调试及通过进程ID间接调试等,并展示了如何利用core文件进行调试,适合于需要深入理解Nginx运行原理的开发者。

1、nginx调试只能重新在部署的时候进行设置在nginx之后添加 –with-debug选项

#开启-g选项 并且去掉Gcc优化
./configure --with-debug --with-cc-opt='-g -O0'

2、编译加安装 ,默认在/usr/local/nginx目录下

make && make install

3、设置配置文件

error_log  logs/error.log  debug;

4、代码中加入自己的调试,就可以在err_log文件中看到加入的代码。

ngx_log_debug(NGX_LOG_DEBUG, log, 0,"[jsh] 11111");

2、gdb调试,参照上面加上-g选项,编译出可执行文件。
方法一:直接法

gdb --args  ./objs/nginx -c  /usr/local/nginx/conf/nginx.cof
#或者
gdb ./objs/nginx
set args -c /usr/local/nginx/conf/nginx.conf

**方法二:通过进程ID间接法**
-------------

./nginx
ps aux |  grep nginx #查看进程id

gdb  -p 进程号
或是
先启动 gdb 再 attach 进程号

方法三: core 文件

./nginx
ps aux |  grep nginx #查看进程id
#看到nginx启动了一个master进程(18237)和一个worker进程(18238)
# 在./objs文件夹中
gcore 18237 # 会生成 core.18237文件
#关掉nginx进程
./nginx -s stop(或者直接使用kill)
gdb ./nginx core.18237 

下面是代码打印出核心模块的命令。

(gdb) set print pretty on #设置打印结构体的格式,
(gdb) p ngx_core_commands #打印出核心模块的命令
$7 = {{
    name = {
      len = 6,
      data = 0x80f90f7 "daemon"
    },
    type = 16843264,
    set = 0x806e6dc <ngx_conf_set_flag_slot>,
    conf = 0,
    offset = 0,
    post = 0x0
  }, {
    name = {
      len = 14,
      data = 0x80f90fe "master_process"
    },
    type = 16843264,
    set = 0x806e6dc <ngx_conf_set_flag_slot>,
    conf = 0,
    offset = 4,
    post = 0x0
  }, {
学完C/C++、数据结构与算法、操作系统、网络编程,还在发愁没有出彩的项目可以写在简历上?总是反问自己,大学四年到底学了什么?不必焦虑,相信你已经具备足够的基础知识,只差一个实战的机会。Nginx作为高可用,高并发,高性能 的BSD lisence 开源项目,应用广泛。2023年就已经超越老大哥Apache,在Web Server 市场中独领风骚。如此优秀的项目近在咫尺。谈中国互联网的发展,就不得不提Nginx,她对中国互联网发展起到了重要的推动作用。但纵观整个互联网,均是从运维角度出发,教授简单的Nginx配置,偶尔有一些点到为止的玩具模块讲解,也居于表面而深度略浅。在信息爆炸的年代,缺少探索Nginx是如何实现其三高特色的系列视频课程,与其在互联网的地位是极度不匹配的,我认为非常可惜。高性能的Nginx对资源的低占用率,其健壮的内存管理,精妙的模块化设计,离不开她优美而质朴,简约而不简单的源码,否则也不会成为淘宝Tengine架构的母体。无论作为应届生,还是初中级程序员,仅停留在如何配置nginx上,和一些道听途说的Nginx八股文概念上,是远远不够的。久负盛名的Nginx其实距离大型复杂的项目还比较远,设计和实现也只是需要一些实战工作经验。完全可以作为处女项目去用心学习。随着深入Nginx,你可以看到各种计算机基础课的影子,她们是那么的似曾相识, 而你,还是那个单手解不开发带,最后只能伴着发香,扫兴而归的少年吗?放心,一切交给Nginx,成熟稳重的她,可以教会你所有。任何疑问,她都会给你答案。Talk is cheap, show me the code.,让我们出出汗,尽情的在Nginx源码里释放你学习的激情吧!授课方式:1. 实际操作 + 内存布局图详解 + 流程图详解,脱离源码分析的枯燥。2. 概念先行,先讲基础知识,再扣源码细节。做到高效。适用人群:1. 在校学生, 正在找工作的应届生。2. 对网络编程感兴趣的初中级 C/C++ 程序员。3. 想丰富简历的程序员
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值