您的位置:首页 > 运维架构 > Nginx

[原创]Liunx 下使用 Eclipse 开发 nginx module,进行单步调试

2010-10-26 20:09 387 查看
 

 

TooNTonG@163.com blog:http://toon-blog.appspot.com/

Liunx使用Eclipse 开发nginx module,进行单步调试

Author: chuantong.huang@gmail.com
Date:2010-10-26
OS:Ubuntu 10.4
 
 
)Nginx最新代码:
wget http://www.nginx.org/download/nginx-0.7.67.tar.gz
tar -xvf nginx-0.7.67.tar.gz
cd nginx-0.7.67
 
)建立模块目录与代码
pwd # 进入Nginx源代码目录,如:
/home/toon/workspace/nginx-0.7.67
mkdir ngx_module_echo
vim ngx_module_echo/config
其内容为:
ngx_addon_name=ngx_module_echo
HTTP_MODULES="$HTTP_MODULES ngx_module_echo"
NGX_ADDON_SRCS="$NGX_ADDON_SRCS $ngx_addon_dir/ngx_module_echo.c"
CORE_LIBS="$CORE_LIBS "

vim ngx_module_echo/ngx_module_echo.c
其内容:
参考nginxecho模块代码,自己google,或参考以下:
http://www.162cm.com/p/ngx_ext.html
 
3)建立Makefile
利用nginx提供的configrue脚本生成Makefile文件:
./configure --without-http_rewrite_module --without-http-cache --add-module=/home/toon/workspace/nginx-0.7.67/ngx_module_echo/ --with-debug
注意:这里要指定moduel目录(与Nginx源码目录下),还要指定debug编译.
BTW:Eclipse 中执行Build project时会执行make clean all,会删除Makefile,故此时应该再执行 configure生成Makefile
可以先make一次,编译出objs/nginx文件。
 
4)Eclipse中建工程
A)选择->新建->Standard Make C++ Project
目录选定为解压出来的源码目录,可看到ngx_module_echo目录:



 
B)修改build选项:
右键工程名—>properties:
主要是把BuildRebuild中的命名删除



 
C)配置运行项参数,打开Run configurations 对话框:
C/C++ Application中选择objs/nginx(如果没有,先make一次)
Argruments中填:-c /home/toon/workspace/nginx-0.7.67/conf/nginx.conf 指定运行时配置文件,下面还要修改此配置文件。



 
 
D)修改上一步指定的nginx.conf文件(以下为非完整文件):

 

worker_processes 1;
master_process off;  
daemon off; #必需设置 daemon为off
http {
server {
listen 8000;  	# 80端口要sudo权限,这里改用8000
server_name localhost;
location = /echo { # 这里就是要写的module使用的配置
echo 'test holle!/n';
}
}
}
 
 

5)就可以在Eclipse中debug你的module了。

curl http://127.0.0.1:8000/echo

然后在Eclipse中对ngx_module_echo/ngx_module_echo.c文件设置断点:



喜欢直接使用gdb的可以使用命令行进行调试,此等高人,也不用看本文了.

gdb --cd=/home/toon/workspace/nginx-0.7.67 --command=.gdbinit -q -nw -tty /dev/pts/4 -i mi1 /home/toon/workspace/nginx-0.7.67/objs/nginx -c /home/toon/workspace/nginx-0.7.67/conf/nginx.conf

 

 

 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息