Liunx下使用Eclipse 开发nginx module,进行单步调试
Author: chuantong.huang@
Date:2010-10-26
1)取Nginx最新代码:
wget /download/nginx-0.7.67.tar.gz
tar -xvf nginx-0.7.67.tar.gz
cd nginx-0.7.67
2)建立模块目录与代码
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
其内容:
参考nginx的echo模块代码,自己google下,或参考以下:
/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选项:
主要是把Build与Rebuild中的命名删除
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。