Java 提供了遠程debug的功能,這確實是一件很好的事。它能夠幫助我們在一些沒有虛機的OS(比如HP,AIX,等等)下調試我們的程序。
1.建立Remote debug的準備工作。
a.可以將這些在java命令行中的設置放到一個script中去。例子如下所示:
java -Xdebug -Xrunjdwp:transport=dt_socket,address=8787,server=y,suspend=y -classpath
其中,“-Xdebug -Xrunjdwp:transport=dt_socket,address=8787,server=y,suspend=y”是必須的。suspend=y---表明是在程序啟動后hang在那個端口處并監聽(如果設為n,則不會hang);address=8787---表明是在遠端機器上的端口號。除此之外,在java后也可以添加java的系統環境變量,如-D等等。
b.在eclipse中可以通過設立一個remote debug的方式來建立這種連接。
2.遠程調試時,局部變量的值無法Watch/Inspect問題的解決
這實際上是由eclipse在build的時候,沒有將javac后的option -g加上去。只有當加上 -g這個參數時,所有的調試信息才會被build到class文件中去。
但ecipse沒有提供這樣在build時設置參數的user interface。所以,最好的方式就是寫一個Ant腳本。
例子如下,
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<project basedir="." default="build" name="ssdv">
<property name="build.location" value="../ssdv_build"/>
<property name="debuglevel" value="source,lines,vars"/><!--必須的-->
<property name="target" value="1.5"/>
<property name="source" value="1.5"/>
<target name="init">
<mkdir dir="bin"/>
</target>
<target name="clean">
<delete dir="bin"/>
</target>
<target depends="init" name="build-project">
<echo message="${ant.project.name}: ${ant.file}"/>
<javac debug="true" debuglevel="${debuglevel}" destdir="bin" source="${source}" target="${target}"> <!--必須的-->
<src path="."/>
<classpath refid="ssdv.classpath"/>
</javac>
</target>
</project>
這樣,將生成的build工程拷貝到要測試的遠程OS。啟動腳本,然后就可以看到local variables了。