Jabberd2 安装配置及调试

从官网上下载源码后解压,

正常安装依次输入以下命令就OK:

1
2
3
4
5
6
7
8
9
10
11
12
$ ./configure --prefix=/path/to/prefix
$ make; make install
``

缺少什么库就依次安装,印象中是需要libz, pcre, sasl 和 ssl库.

如果作为二次开发需要开启调试功能就需要在编译时期指定些参数:

```bash
$ export CFLAGS+="-g -O0 -Wall"   // 默认应该是-O2, 但是优化过后很不方便调试, 所以关闭优化
$ ./configure --prefix=/usr/local --enable-mio=epoll --enable-debug --enable-mio-debug
$ make; make install

–enable-mio参数指定使用的I/O复用模型.

–enable-debug参数开启调试,启用这个参数后还需要修改对应的xml配置文件,开启XML的log.debug位置来指定调试信息输出,以下是我的配置

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
<!-- Log configuration - type is "syslog", "file" or "stdout" -->
<log type='file'>
<!-- If logging to syslog, this is the log ident -->
<ident>jabberd/c2s</ident>

<!-- If logging to syslog, this is the log facility
(local0 - local7)                        [default: local3] -->
<facility>local3</facility>

<!-- If logging to file, this is the filename of the logfile -->

<file>/usr/local/var/jabberd/log/c2s.log</file>
<!-- Filename of the debug logfile -->

<debug>/usr/local/var/jabberd/log/debug-${id}.log</debug>

</log>

–enable-mio-debug参数开启mio调试,mio信息会输出到stderr

目前需要的就是这么多.

如果是直接用Netbeans IDE载入源码在远程主机上编译的话会失败, 建议通过文件共享或者是将整个源码解压到Netbeans在远程机器的对应目录下覆盖,然后configure下,这样Netbeans就可以编译了,而且可以远程查看代码并调试.

调试前需要配置Jabberd2的服务器设置,具体如何配置官网上有很详细的说明,这里给出链接,就不多废话了.

Jabberd2安装配置(中文)

Jabberd2安装配置(英文)

调试

既然Netbeans可以胜任调试,当然就不会手动去用GDB了.

编译完成后可以直接用make install,也可以单独将要调试的可执行文件替换到对应的安装目录下.

用下面的命令启动jabberd2服务器.

$ jabberd –D –B &

实际上这是个perl脚本,不过我们关心的是启动的进程,脚本里启动了router,sm,c2s和s2s四个进程.在Netbeans菜单选择”调试”-“连接调试器”, 在连接对话框里选择远程主机.

image

以c2s进程为例,在过滤器里输入c2s就可以看到它的进程, 它的实际执行参数是:

$ /usr/local/bin/c2s -c /usr/local/etc/c2s.xml –D

最后要记得在”项目”一栏指定你的源码项目.

确定后就可以开始调试.

对于这类服务端程序如果要调试入口处初始化之类的函数,就在main函数里写个sleep,sleep十几秒,好让你有时间用Netbeans attach到进程上.

创建用户

创建用户可以通过一些XMPP客户端来实现,也可以用telnet命令:

telnet your.server.domain 5222

然后输入:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<stream:stream
  to='**your.server.domain**'
  xmlns='jabber:client'
  xmlns:stream='https://etherx.jabber.org/streams'>

<iq id='reg1' type='set'>
  <query xmlns='jabber:iq:register'>
    <username>**admin**</username>
    <password>**123qwe**</password>
    <name>**admin**</name>
    <email></email>
  </query>
</iq>

</stream:stream>

这样就搭建好了Jabberd2的开发环境.