对调试,调试,SmartFoxServer的调试坑了我一天的时间, 你没看错是一天的时间!!!java
事情是这样的, 那是一个神清气爽的早上, 我坐在桌子前敲着代码, ...socket
算了, 仍是说正事!编辑器
先说下两种调试方法debug
一.远程调试(扩展程序在SmartFoxServer的环境下运行, 在编辑器里调试)调试
1. 开启SmartFoxServer的远程调试(准确的说应该是java应用程序的远程调试功能),操做以下code
a. 登陆SmartFoxServer后台管理, 进入Server Configurator功能, 点击JVM setting选项页server
b. 点击JVM options后面的 Add按钮blog
c. 依次添加以下参数ip
-Xdebug -Xnoagent -Xrunjdwp:transport=dt_socket,address=8787,server=y,suspend=n //address=8787表示监听的端口号, 在编辑器里设置远程调试时须要用到
d. 保存(左下角的submit)开发
2. 在编辑器里配置远程调试属性(MyEclipse)
a. 打开Debug Configurations, 选择Remote Java Application, 右键 New
b. 设置相关属性
Name: 随便写
Project: 须要调试的项目 Connection Type: Standard(Socket Attach) Host: localhost Port: 8787
c. Apply并Debug(不会有任何反应)
坑一: 出现Failed to connect remote VM, Connection refused.
可能缘由:
1. SmartFoxServer服务没启动, 确保SmartFoxServer服务已启动
2. 电脑防火墙设置, 确保8787端口已开放
3. 点了屡次Debug, 在正确链接到了SmartFoxServer时编辑器是没有任何提示的, 不会进入到Debgu界面, 甚至在客户端已经链接到了服务端应用时还不会进入Debug页面(这取决于Extension在什么时候被加载), 若是点了屡次, 端口被占用就会链接失败
若是以上三点都不存在, 请关闭编辑器, 关闭电脑, 朝南拜三拜, 开电脑, 开编辑器, 再试试.
坑二.不进入调试
可能缘由
1. Extension没有被加载, 没有将Extension附加到Zone上或Room上
2. 没有触发相应的断点, 确保必定能调用到断点所在的方法
二.开发环境调试(在编辑器里直接调试, 不用打jar包)
1. 将SmartFoxServer安装目录/SmartFoxServer_2X/SFS2X/下的config, data,, extensions, lib, logs, www, zones文件夹直接复制到项目的根目录下(与项目的src目录同级)
2. 将lib目录下的全部jar文件添加到Libraries下
3. 配置设置属性
a. 打开Debug Configurations, 选择Java Application, 右键 New
b. 设置相关属性
Name: 随便写 Project: 须要调试的项目 Main class: com.smartfoxserver.v2.Main
c. Apply并Debug(项目启动, 并在控制台输入相关信息)
坑三.没法启动
可能缘由
1. jar文件添加错误, 须要将lib目录下除了文件夹(二级目录)的全部jar文件添加到Libraries中
2. 文件结构错误, 没有将config, data,, extensions, lib, logs, www, zones这些文件夹所有复制到项目目录下
两种方法的比较
1. 方法一比较干净, 不会打乱项目目录, 可是修改代码后须要从新打jar包, 发布到SmartFoxServer的Extensions目录下
2. 方法二因为须要引用不相关的文件夹, 会使项目目录比较乱, 可是修改代码后只须要从新便可, 不须要打jar包, 从新发布
各有利弊, 自行选择.
目前只发现这两种调试方式, 若是有更好的方式, 但愿能说一下!
本文版权归做者和博客园共有,来源网址:http://www.cnblogs.com/code-boy/欢迎各位转载,可是未经做者本人赞成,转载文章以后必须在文章页面明显位置给出做者和原文链接,不然保留追究法律责任的权利。