Smack包含两个内嵌的调试控制台,它让你跟踪所有在客户端和服务器之间的XML传输。lite debugger是smack.jar的一部分和enhanced debugger被包含在smack-debug.jar。
Debug模式可以从两种不同的方式启动:
在创建一个新的连接之前添加下面行代码:
Connection.DEBUG_ENABLED = true;
设置Java系统属性smack.debugEnabled为true。系统属性可以在命令行中设置,例如:
java -Dsmack.debugEnabled=true SomeApp
如果你想在你的应用程序中明确禁止debug模式,包括使用命令行参数,在你操作一个新的连接之前向你的应用程序添加以下行:
Connection.DEBUG_ENABLED = false;
Smack使用下面的逻辑来确定使用debug控制台:
它将尝试使用在Java系统属性中指定的debugger类smack.debuggerClass。如果你需要开发你自己的debugger,实现SmackDebugger接口,然后再命令行设置系统属性,如下:
java -Dsmack.debuggerClass=my.company.com.MyDebugger SomeApp
如果第一步失败,那么Smack将尝试使用enhanced debugger。smackx-debug.jar文件包了enhanced debugger。因此你将需要在classpath中放置jar文件。对于这种状况空间是一个问题,你可能只想开发smack.jar,在这种情况下enhanced debugger将不可用。
如果前两步失败了,最后一步是使用lite debugger。lite debugger对于你需要低内存打印的情况是非常好得选择。
Enhanced Debugger
当debug模式启动,一个debug窗口将会显示,包含为每个创建的连接的tab。这个窗口将会包含下面的信息:
Connection tab--每个tab显示相关的连接的debug信息。
Smack Info tab--显示关于Smack(例如Smack版本,安装的组件,等)信息。
Connection tab讲包含下面的信息:
所有的Packet--显示发送和接收被Smack解析的packet信息。
原始发送Packet--Smack产生并发送给服务器的原始XML传输。
原始接收Packet--由服务器发送给客户端的原始XML传输。
ad-hot消息-允许发送的任何类型ad-hot packet。
信息--显示连接状态和统计。
Lite Debugger
当debugg模式被启动,当每个新的连接被创建的时候一个debug窗口将会显示。这个窗口将包含下面的信息:
客户端传输(红色文本)--由Smack产生并发送给服务器的原始的XML传输
服务器传输(蓝色文本)--由服务器产生发送给客户端的原始XML传输。
被翻译的Packet(绿色文本)--显示来自服务器被Smack翻译的XML packet。
在任何面板右击来打开一个选择菜单,复制内容到系统剪切板或者清除面板的内容。