SmartFoxServer学习(2)--Extension调试

对调试,调试,SmartFoxServer的调试坑了我一天的时间, 你没看错是一天的时间!!!

事情是这样的, 那是一个神清气爽的早上, 我坐在桌子前敲着代码, ...

算了, 还是说正事!

先说下两种调试方法

一.远程调试(扩展程序在SmartFoxServer的环境下运行, 在编辑器里调试)

1. 开启SmartFoxServer的远程调试(准确的说应该是java应用程序的远程调试功能),操作如下

a. 登录SmartFoxServer后台管理, 进入Server Configurator功能, 点击JVM setting选项页

b. 点击JVM options后面的 Add按钮

c. 依次添加如下参数

-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/欢迎各位转载,但是未经作者本人同意,转载文章之后必须在文章页面明显位置给出作者和原文连接,否则保留追究法律责任的权利。

原文地址:https://www.cnblogs.com/code-boy/p/4883402.html