如果要在gameGarden下开发游戏的话,因为游戏会运行在sandbox中,服务端和客户端都将用ant任务来启动,这给开发调试带来了很多的困难。下面介绍一种可以在eclipse中调试ant任务的方法。
首先在build.xml中复制server任务到一个新的任务,比如叫做server-debug,在启动虚拟机的时候加入下面的这条语句。
<jvmarg value="-Xrunjdwp:transport=dt_socket,address=5005,server=y"/>
- <!-- a target for running the game server in debug mode -->
- <target name="server-debug" depends="compile" description="Runs a test server.">
- <propertyfile file="${deploy.dir}/classes/toybox.properties">
- <entry key="resource_dir" value="${deploy.dir}"/>
- <entry key="resource_url" value="file://${deploy.dir}"/>
- </propertyfile>
- <!-- we have to convert basedir to forward slashes to make it work as a URL -->
- <path id="codedir"><pathelement location="${basedir}/../lib"/></path>
- <pathconvert targetos="unix" property="basedir.unix" refid="codedir"/>
- <!-- we also have to stick an extra / in front of basedir.unix to make -->
- <!-- things work on windows, fortunately it does not booch things on unix -->
- <echo file="${deploy.dir}/server.policy">
- grant codeBase "file:///${basedir.unix}/../lib/-" {
- permission java.security.AllPermission;
- };
- </echo>
- <java classname="com.threerings.toybox.server.ToyBoxServer" fork="true">
- <classpath refid="classpath"/>
- <sysproperty key="java.security.manager" value=""/>
- <sysproperty key="java.security.policy" value="${deploy.dir}/server.policy"/>
- <sysproperty key="game_conf" value="${app.name}.xml"/>
- <jvmarg value="-Xrunjdwp:transport=dt_socket,address=5005,server=y"/>
- </java>
- <delete file="${deploy.dir}/classes/toybox.properties"/>
- <delete file="${deploy.dir}/server.policy"/>
- </target>
这时候在eclipse中调出ant视图,运行该server-debug任务,这会儿只会在控制台会输出
- Buildfile: D:/Java/threerings/gardens/projects/games/five/build.xml
- prepare:
- compile:
- server-debug:
- [propertyfile] Updating property file: D:/Java/threerings/gardens/projects/games/five/dist/classes/toybox.properties
- [java] Listening for transport dt_socket at address: 5005
然后在菜单中选择run-->debug configurations...选择remote java application,在port这一栏里填入前面加到jvm参数中的5005,再点击apply和debug,这时候在控制台就会正常输出,并且可以加入断点调试了。