有關(guān)在eclipse上遠(yuǎn)程debug的問(wèn)題。
Java 提供了遠(yuǎn)程debug的功能,這確實(shí)是一件很好的事。它能夠幫助我們?cè)谝恍](méi)有虛機(jī)的OS(比如HP,AIX,等等)下調(diào)試我們的程序。
1.建立Remote debug的準(zhǔn)備工作。
a.可以將這些在java命令行中的設(shè)置放到一個(gè)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---表明是在程序啟動(dòng)后hang在那個(gè)端口處并監(jiān)聽(tīng)(如果設(shè)為n,則不會(huì)hang);address=8787---表明是在遠(yuǎn)端機(jī)器上的端口號(hào)。除此之外,在java后也可以添加java的系統(tǒng)環(huán)境變量,如-D等等。
b.在eclipse中可以通過(guò)設(shè)立一個(gè)remote debug的方式來(lái)建立這種連接。
2.遠(yuǎn)程調(diào)試時(shí),局部變量的值無(wú)法Watch/Inspect問(wèn)題的解決
這實(shí)際上是由eclipse在build的時(shí)候,沒(méi)有將javac后的option -g加上去。只有當(dāng)加上 -g這個(gè)參數(shù)時(shí),所有的調(diào)試信息才會(huì)被build到class文件中去。
但ecipse沒(méi)有提供這樣在build時(shí)設(shè)置參數(shù)的user interface。所以,最好的方式就是寫(xiě)一個(gè)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工程拷貝到要測(cè)試的遠(yuǎn)程O(píng)S。啟動(dòng)腳本,然后就可以看到local variables了。
1.建立Remote debug的準(zhǔn)備工作。
a.可以將這些在java命令行中的設(shè)置放到一個(gè)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---表明是在程序啟動(dòng)后hang在那個(gè)端口處并監(jiān)聽(tīng)(如果設(shè)為n,則不會(huì)hang);address=8787---表明是在遠(yuǎn)端機(jī)器上的端口號(hào)。除此之外,在java后也可以添加java的系統(tǒng)環(huán)境變量,如-D等等。
b.在eclipse中可以通過(guò)設(shè)立一個(gè)remote debug的方式來(lái)建立這種連接。
2.遠(yuǎn)程調(diào)試時(shí),局部變量的值無(wú)法Watch/Inspect問(wèn)題的解決
這實(shí)際上是由eclipse在build的時(shí)候,沒(méi)有將javac后的option -g加上去。只有當(dāng)加上 -g這個(gè)參數(shù)時(shí),所有的調(diào)試信息才會(huì)被build到class文件中去。
但ecipse沒(méi)有提供這樣在build時(shí)設(shè)置參數(shù)的user interface。所以,最好的方式就是寫(xiě)一個(gè)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工程拷貝到要測(cè)試的遠(yuǎn)程O(píng)S。啟動(dòng)腳本,然后就可以看到local variables了。
posted on 2008-12-12 17:34 Jeffrey Feng 閱讀(817) 評(píng)論(0) 編輯 收藏 所屬分類: Web服務(wù)器