﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>C++博客-白云哥-随笔分类-Bada</title><link>http://www.cppblog.com/helloqinglan/category/14449.html</link><description>身披半件长工衣，怀揣一颗地主心</description><language>zh-cn</language><lastBuildDate>Fri, 06 Aug 2010 16:33:43 GMT</lastBuildDate><pubDate>Fri, 06 Aug 2010 16:33:43 GMT</pubDate><ttl>60</ttl><item><title>使用NetBeans调试SmartFoxServer的Extension</title><link>http://www.cppblog.com/helloqinglan/archive/2010/07/22/121007.html</link><dc:creator>白云哥</dc:creator><author>白云哥</author><pubDate>Thu, 22 Jul 2010 00:12:00 GMT</pubDate><guid>http://www.cppblog.com/helloqinglan/archive/2010/07/22/121007.html</guid><wfw:comment>http://www.cppblog.com/helloqinglan/comments/121007.html</wfw:comment><comments>http://www.cppblog.com/helloqinglan/archive/2010/07/22/121007.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/helloqinglan/comments/commentRss/121007.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/helloqinglan/services/trackbacks/121007.html</trackback:ping><description><![CDATA[<p><font size="4">结束了两个星期的用trace进行SmartFoxserver Extension调试的痛苦历史之后，我决定再来尝试一下怎么在IED环境下进行远程调试。</font></p> <p><font size="4">上一次打算在Eclipse下进行，不知道哪一个环节出错，没能成功，这次改用NetBeans吧，正好赶上NetBeans新版本发布，来试用一次。</font></p> <p><font size="4"></font>&nbsp;</p> <p><font size="4">按照</font><a href="http://www.smartfoxserver.com/forums/viewtopic.php?t=6030" target="_blank"><font size="4">这里</font></a><font size="4">描述的方法，很快把Eclipse下创建的工程导入到了NetBeans下，不过遇到了点小问题，一堆的乱码。检查了下发现，Eclipse下创建的文件编码为ANSI，在NetBeans下不识别其中的中文注释，把文件改成UTF-8后问题解决，可后来我再试图在Eclipse下打开这些文件时问题又出现了，Eclipse只识别ANSI编码的文件？似乎不大可能吧，不过一时也没找到解决方法，暂时放弃，改用NetBeans吧。</font></p> <p><font size="4"></font>&nbsp;</p> <p><font size="4">按照论坛上的方法做就行，不过可能因为版本更新的原因，实际做的时候还是有点差别</font></p> <p><font size="4"></font>&nbsp;</p> <p><font size="4">Step 1<br>Download the </font><a href="http://www.netbeans.org/downloads"><font size="4">Netbeans IDE</font></a><font size="4"> for java development. (47mb SE version should be fine!)</font></p> <p><font size="4">这一步就是这样了</font></p> <p><br><font size="4">Step 2<br>Install and open Netbeans. Create a project from existing java source pointing to where your extensions are. Should be placed in src subfolder to be nice.<br>(I for sure could not make it work if the source was not in a subfolder)<br>Right click on project and choose properties-&gt;libraries. Add all jar files from your smartfox installation lib dir.</font></p> <p><font size="4">在NetBeans下导入原来Eclipse创建的文件，只需要src目录即可</font></p> <p><font size="4">导入libraries时注意，按照</font><a href="http://www.smartfoxserver.com/docs/index.htm?http://www.smartfoxserver.com/docs/docPages/sfsPro/javaExtensions.htm" target="_blank"><font size="4">这里</font></a><font size="4">的方法，只需要导入3个jar文件，就是这样</font></p> <p><font size="4"><img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" class="wlDisabledImage" title="nb5" border="0" alt="nb5" src="http://www.cppblog.com/images/cppblog_com/helloqinglan/WindowsLiveWriter/ceae5a774289_14F8F/nb5_3.gif" width="686" height="496"></font></p> <p><br><font size="4">Step 3<br>Goto Files tab. Expand nbbuild.xml. Click on -post-compile target.<br>Copy and paste the following code: (Note: adjust todir to point to your smartfox program extension directory)<br>&lt;copy todir="C:\Programmer\SmartFoxServerPRO_1.6.6\Server\javaExtensions"&gt;<br>&lt;fileset dir="${build.dir}/classes/"/&gt;<br>&lt;/copy&gt;</font></p> <p><font size="4">我的NetBeans下没有nbbuild.xml，倒是有一个build.xml，不过里面没内容 <img style="border-bottom-style: none; border-right-style: none; border-top-style: none; border-left-style: none" class="wlEmoticon wlEmoticon-sadsmile" alt="悲伤" src="http://www.cppblog.com/images/cppblog_com/helloqinglan/WindowsLiveWriter/ceae5a774289_14F8F/wlEmoticon-sadsmile_2.png"></font></p> <p><font size="4">再看了下，原来引用的build-impl.xml，上面有个简单的介绍，在build.xml里添加如下内容即可：</font></p> <p><font size="4">&lt;target name="-post-compile"&gt;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;copy todir="D:\SmartFoxServer\Server\javaExtensions"&gt;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;fileset dir="${build.dir}/classes/"/&gt;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/copy&gt;<br>&lt;/target&gt;</font></p> <p><font size="4">根据你的SmartFoxServer安装目录进行修改即可</font></p> <p><br><font size="4">Step 4<br>Create a new batchfile called SmartFoxDebug?.bat<br>Copy and paste the following content into it: (Again adjust to your installation directory)<br>C:\Programmer\SmartFoxServerPRO_1.6.6\Server\wrapper.exe -c "C:\Programmer\SmartFoxServerPRO_1.6.6\Server\conf\wrapper.conf"</font></p> <p><font size="4">这一步不需要，在我安装的目录下直接有个smarfoxService.bat批处理文件，用它就行了</font></p> <p><br><font size="4">Step 5<br>Add the following lines to your wrapper.conf</font></p> <p><strong><font size="4">Code:</font></strong> </p><p><font size="4"># runtimedebug<br>wrapper.java.additional.3=-Xdebug<br>wrapper.java.additional.4=-Xnoagent<br>wrapper.java.additional.5=-Xrunjdwp:transport=dt_socket,address=8888,server=y,suspend=n</font> </p><p><font size="4">这里的意思是要在SmartFoxServer里开户远程调试的监听，在我安装的SFS版本里原来比这多了一项配置，所以最终是这样的：</font> </p><p><font size="4"># Java Additional Parameters<br>wrapper.java.additional.1=-server<br>wrapper.java.additional.2=-Dfile.encoding=UTF-8<br>wrapper.java.additional.3=-Djava.util.logging.config.file=logging.properties<br>wrapper.java.additional.4=-Xdebug<br>wrapper.java.additional.5=-Xnoagent<br>wrapper.java.additional.6=-Xrunjdwp:transport=dt_socket,address=8787,server=y,suspend=n</font></p> <p><font size="4"></font>&nbsp; </p><p><font size="4">Step 6<br>Choose Run-&gt;Build main project (F11) in Netbeans.<br>If build is ok, click the batch file. Now select debug-&gt;attach debugger and choose port 8888. Debugger console should say "User program running".<br>Now you can place breakpoints and trigger your extensions normally.</font> </p><p><font size="4">这里就是最终我们要实现的效果了，挂接SmartFoxServer的远程JVM进行调试，配置项在 调试(D) 下的 连接调试器(A) ，如果你跟我一样安装的是中文版NetBeans的话 <img style="border-bottom-style: none; border-right-style: none; border-top-style: none; border-left-style: none" class="wlEmoticon wlEmoticon-smile" alt="微笑" src="http://www.cppblog.com/images/cppblog_com/helloqinglan/WindowsLiveWriter/ceae5a774289_14F8F/wlEmoticon-smile_2.png"></font> </p><p><font size="4">贴张图，就是这样，注意端口号，是上面配置的那个，不是SFS对客户端连接的监听商品号9393哦</font> </p><p><font size="4"><img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" class="wlDisabledImage" title="config" border="0" alt="config" src="http://www.cppblog.com/images/cppblog_com/helloqinglan/WindowsLiveWriter/ceae5a774289_14F8F/config_3.jpg" width="497" height="316"></font> </p><p><font size="4"></font>&nbsp;</p> <p><font size="4"></font>&nbsp;</p> <p><font size="4">好了，先启动SFS，用上面说的那个批处理文件，你会看到一行提示信息，JVM远程调试的监听已打开</font></p> <p><font size="4">然后连接调试器</font></p> <p><font size="4">在NetBeans里打个断点看看，O了</font></p><br> <p><font size="4"></font></p><br> <p><font size="4"></font></p><img src ="http://www.cppblog.com/helloqinglan/aggbug/121007.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/helloqinglan/" target="_blank">白云哥</a> 2010-07-22 08:12 <a href="http://www.cppblog.com/helloqinglan/archive/2010/07/22/121007.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>