文档章节

gdb 调试 nginx upload模块

s
 sxytcy
发布于 2016/03/17 19:21
字数 390
阅读 8
收藏 0

1.由于gdb需要gcc的时候加上-g参数,这样生成的文件才能使用gdb调试,因此我们要对源码做一下小改动

 

修改auto/cc/conf文件

 

ngx_compile_opt="-c"

 

变为

 

ngx_compile_opt="-c -g"

执行./configure  参数.

 

 

确认

 

发现多出了objs文件夹,里面有Makefile文件

 

确认一下-g参数是否加上了

 

vim objs/Makefile

 

ngx_module.o  下面确认加上了 -g.

 

make/make install

 

2. 安装gdb 调试环境.

sudo yum --nogpgcheck --enablerepo=debug install glibc-debuginfo

 

vi /etc/yum.repos.d/CentOS-Debuginfo.repo

 

enabled = 1;

 

yum intall yum-utils   //debuginfo-install 工具包

 

sudo yum install glibc

 

debuginfo-install glibc

 

sudo yum install gdb  //安装gdb

 

3. 启动 gdb 调试. 共有3中方式启动gdb 调试. 参考链接

http://blog.csdn.net/yangruibao/article/details/7680122

 

下面是常用的调试方式.

 

cd 生成目录.

 

nginx 相关配置

daemon on;            //默认开启. 不用修改.

master_process on;    //默认开启. 不用修改.

 

worker_processes  1;

 

sudo gdb ./nginx

 

//启动

(gdb) r

 

(gdb) shell pidof nginx

10246 10245

(gdb)

可以看到一共有两个nginx进程,这里10245master进程,而10246worker进程。我们要调试worker 10246可以如下:

(gdb) attach 10246

 

打断点.

(gdb) b ngx_http_do_read_client_request_body

或者

(gdb) b ng_http_upload_module.c:783

 

// 运行. 开始测试. 比如上传留言文件.

(gdb) c

 

// hit 断点条件时. 进程停下来了.

(gdb) {

(gdb) detach

Detaching from program: /usr/local/nginx/sbin/nginx, process

 

 

通过bt命令可以查看堆栈情况.

(gdb) bt

 

下一步

(gdb) n

 

打印 ret 变量. 显示为10进制.

(gdb) p/d ret

 

(gdb) info locals

 

(gdb) info breaks

 

(gdb) 


详细命令解释可以参看.

http://www.cnblogs.com/evasnowind/archive/2010/11/07/1871324.html


© 著作权归作者所有

s
粉丝 0
博文 3
码字总数 2490
作品 0
浦东
高级程序员
私信 提问
nginx模块_使用gdb调试nginx源码

工欲善其事必先利其器,如何使用调试工具gdb一步步调试nginx是了解nginx的重要手段。 ps:本文的目标人群是像我这样初接触Unix编程的同学,如果有什么地方错误请指正。 熟悉gdb的使用 这里就...

王二狗子11
2018/01/08
0
0
Nginx 源码学习资料

转自http://www.cnblogs.com/yjf512/archive/2012/06/13/2548515.html nginx源码学习是一个痛苦又快乐的过程,下面列出了一些nginx的学习资源。 首先要做的当然是下载一份nginx源码,可以从n...

小南学技术
2016/08/09
0
0
nginx源码学习资源(不断更新)

nginx源码学习是一个痛苦又快乐的过程,下面列出了一些nginx的学习资源。 首先要做的当然是下载一份nginx源码,可以从nginx官方网站下载一份最新的。 看了nginx源码,发现这是一份完全没有注...

王二狗子11
2018/01/08
0
0
nginx 源码调试

这段时间正在学习nginx源码,看到一贴子的提问 (帖子:http://www.oschina.net/question/27119912165566?p=1#AnchorAnswer1114315),决定试试能不能搞定。 这个帖子的主要问题是,自己写的...

悬崖
2016/04/14
268
1
c语言开源项目--nigix学习资料总结 by 博客园 叶剑峰

nginx源码学习是一个痛苦又快乐的过程,下面列出了一些nginx的学习资源。 首先要做的当然是下载一份nginx源码,可以从nginx官方网站下载一份最新的。 看了nginx源码,发现这是一份完全没有注...

文艺小青年
2017/04/08
0
0

没有更多内容

加载失败,请刷新页面

加载更多

CSS--列表

一、列表标识项 list-style-type none:去掉标识项 disc:默认实心圆 circle:空心圆 squire:矩形 二、列表项图片 list-style-img: 取值:url(路径) 三、列表项位置 list-style-position:...

wytao1995
今天
4
0
linux 命令-文本比较comm、diff、patch

本文原创首发于公众号:编程三分钟 今天学了三个文本比较的命令分享给大家。 comm comm 命令比较相同的文本 $ cat charabc$ cat chardiffadc 比如,我有两个文件char和chardiff如上,...

编程三分钟
今天
7
0
QML教程

https://blog.csdn.net/qq_40194498/article/category/7580030 https://blog.csdn.net/LaineGates/article/details/50887765...

shzwork
今天
5
0
HA Cluster之5

对于使用heartbeat v2版的CRM配置的集群信息都是保存在一个名为cib.xml的配置文件中,存放在/var/lib/heartbeat/crm/下。CIB:Cluster Information Base,由于xml文件配置不是那么方便,所以...

lhdzw
今天
6
0
玩转Redis-Redis基础数据结构及核心命令

  《玩转Redis》系列文章主要讲述Redis的基础及中高级应用,文章基于Redis5.0.4+。本文主要讲述Redis的数据结构String,《玩转Redis-Redis基础数据结构及核心命令》相关操作命令为方便对比...

zxiaofan666
今天
11
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部