Jeffrey's Sky

Go with wind
随笔 - 14, 文章 - 1, 评论 - 15, 引用 - 0
数据加载中……

有关在eclipse上远程debug的问题。

   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了。

posted on 2008-12-12 17:34 Jeffrey Feng 阅读(801) 评论(0)  编辑  收藏 所属分类: Web服务器


只有注册用户登录后才能发表评论。


网站导航: