热门标签 | HotTags
当前位置:  开发笔记 > 后端 > 正文

使用gdb调试Nginx程序

在修改nginx源码中学习到了如何gdb调试nginx代码,看运行方式,设置nginx源码运行断点,在断点处打印对应的变量的结构或者属性值。下面说说如何实现gdb调试nginx,我是在linux下调试的首先配置nginx安装程序找到nginx/auto/cc/conf文件,用vim或者什么打开
在修改nginx源码中学习到了如何gdb调试nginx代码,看运行方式,设置nginx源码运行断点,在断点处打印对应的变量的结构或者属性值。下面说说如何实现gdb调试nginx,我是在linux下调试的

首先配置nginx安装程序
找到 nginx/auto/cc/conf 文件,用vim或者什么打开,到第八行
找到:ngx_compile_opt="-c"
更改为: ngx_compile_opt="-c -g"

然后进行编译安装
./configure --user=www --group=www  --prefix=/nginx --add-module=../ngx_cache_purge-1.2 --with-pcre
 --with-http_sub_module --with-http_stub_status_module --with-http_ssl_module

这里的user和group 还有prefix是自己定义的
make 后确认一下,调试模式是否已经配置ok
查看 vim objs/Makefile 文件大概332行 发现
330 objs/ngx_modules.o:     $(CORE_DEPS) \
331         objs/ngx_modules.c
332         $(CC) -c -g $(CFLAGS) $(CORE_INCS) \
333                 -o objs/ngx_modules.o \
已经有  $(CC) -c -g "-g" 的配置,这说明配置成功了。

makeinstall
安装完毕后,我们看nginx的配置文件/nginx/conf/nginx.conf

看这个 daemon off; 配置,如果前面有# ,则使用下面的多线程配置
worker_processes   2;
worker_cpu_affinity  01 10;

如果没有#则是单进程模式运行。
我们用gdb调试,可以说有三种方式

在单线程模式下
1.运行 gdb /nginx/sbin/nginx ,进入后 输入 r (也就是run) 进入了gdb调试模式
2.或者./nginx/sbin/nginx 然后查询 对应的进程号  gdb p 进程号

在多线程下
3. ./nginx/sbin/nginx 查询对应的所有的进程号 并进行多个窗口打开,每个窗口独立gdb p 进程号
进入调试模式后,可以设置断点,继续监听等
这就是gdb调试nginx的简单操作

推荐阅读
  • 本文主要介绍关于linux文件描述符设置,centos7设置文件句柄数,centos7查看进程数的知识点,对【Linux之进程数和句柄数】和【linux句柄数含义】有兴趣的朋友可以看下由【东城绝神】投 ... [详细]
  • Nginx使用AWStats日志分析的步骤及注意事项
    本文介绍了在Centos7操作系统上使用Nginx和AWStats进行日志分析的步骤和注意事项。通过AWStats可以统计网站的访问量、IP地址、操作系统、浏览器等信息,并提供精确到每月、每日、每小时的数据。在部署AWStats之前需要确认服务器上已经安装了Perl环境,并进行DNS解析。 ... [详细]
  • Linux服务器密码过期策略、登录次数限制、私钥登录等配置方法
    本文介绍了在Linux服务器上进行密码过期策略、登录次数限制、私钥登录等配置的方法。通过修改配置文件中的参数,可以设置密码的有效期、最小间隔时间、最小长度,并在密码过期前进行提示。同时还介绍了如何进行公钥登录和修改默认账户用户名的操作。详细步骤和注意事项可参考本文内容。 ... [详细]
  • 本文介绍了在rhel5.5操作系统下搭建网关+LAMP+postfix+dhcp的步骤和配置方法。通过配置dhcp自动分配ip、实现外网访问公司网站、内网收发邮件、内网上网以及SNAT转换等功能。详细介绍了安装dhcp和配置相关文件的步骤,并提供了相关的命令和配置示例。 ... [详细]
  • 图解redis的持久化存储机制RDB和AOF的原理和优缺点
    本文通过图解的方式介绍了redis的持久化存储机制RDB和AOF的原理和优缺点。RDB是将redis内存中的数据保存为快照文件,恢复速度较快但不支持拉链式快照。AOF是将操作日志保存到磁盘,实时存储数据但恢复速度较慢。文章详细分析了两种机制的优缺点,帮助读者更好地理解redis的持久化存储策略。 ... [详细]
  • 本文介绍了在mac环境下使用nginx配置nodejs代理服务器的步骤,包括安装nginx、创建目录和文件、配置代理的域名和日志记录等。 ... [详细]
  • 本文详细介绍了Vim编辑器中的三种模式(命令模式、末行模式和编辑模式)以及它们之间的操作区别和切换方法。Vim编辑器凭借其多种命令快捷键和高效率的操作方式,得到了广大厂商和用户的认可。对于想要高效操作文本的用户来说,了解这些模式的使用方法是必不可少的。 ... [详细]
  • mac php错误日志配置方法及错误级别修改
    本文介绍了在mac环境下配置php错误日志的方法,包括修改php.ini文件和httpd.conf文件的操作步骤。同时还介绍了如何修改错误级别,以及相应的错误级别参考链接。 ... [详细]
  • 本文介绍了在CentOS 6.4系统中更新源地址的方法,包括备份现有源文件、下载163源、修改文件名、更新列表和系统,并提供了相应的命令。 ... [详细]
  • svnWebUI:一款现代化的svn服务端管理软件
    svnWebUI是一款图形化管理服务端Subversion的配置工具,适用于非程序员使用。它解决了svn用户和权限配置繁琐且不便的问题,提供了现代化的web界面,让svn服务端管理变得轻松。演示地址:http://svn.nginxwebui.cn:6060。 ... [详细]
  • 深入解析Linux下的I/O多路转接epoll技术
    本文深入解析了Linux下的I/O多路转接epoll技术,介绍了select和poll函数的问题,以及epoll函数的设计和优点。同时讲解了epoll函数的使用方法,包括epoll_create和epoll_ctl两个系统调用。 ... [详细]
  • 本文介绍了5个基本Linux命令行工具的现代化替代品,包括du、top和ncdu。这些替代品在功能上进行了改进,提高了可用性,并且适用于现代化系统。其中,ncdu是du的替代品,它提供了与du类似的结果,但在一个基于curses的交互式界面中,重点关注占用磁盘空间较多的目录。 ... [详细]
  • 进入配置文件目录:[rootlinuxidcresin-4.0.]#cdusrlocalresinconf查看都有哪些配置文件:[rootlinuxid ... [详细]
  • 1、打开etcsysconfiggrub,   #vimetcsysconfiggrub   内容如下: ... [详细]
  • Linux 服务器修改用户名
    Linux服务器修改用户名1、编辑名称vimetchostname2、保存编辑并退出wq3、重 ... [详细]
author-avatar
yangdawen1985_156
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有