對調試,調試,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/歡迎各位轉載,可是未經做者本人贊成,轉載文章以後必須在文章頁面明顯位置給出做者和原文鏈接,不然保留追究法律責任的權利。