﻿<?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>BlogJava-Jeffrey's Sky-随笔分类-Web服务器</title><link>http://www.blogjava.net/Jeffery001/category/35663.html</link><description>Go with wind</description><language>zh-cn</language><lastBuildDate>Fri, 12 Dec 2008 20:53:29 GMT</lastBuildDate><pubDate>Fri, 12 Dec 2008 20:53:29 GMT</pubDate><ttl>60</ttl><item><title>有关在eclipse上远程debug的问题。</title><link>http://www.blogjava.net/Jeffery001/archive/2008/12/12/246001.html</link><dc:creator>Jeffrey Feng</dc:creator><author>Jeffrey Feng</author><pubDate>Fri, 12 Dec 2008 09:34:00 GMT</pubDate><guid>http://www.blogjava.net/Jeffery001/archive/2008/12/12/246001.html</guid><wfw:comment>http://www.blogjava.net/Jeffery001/comments/246001.html</wfw:comment><comments>http://www.blogjava.net/Jeffery001/archive/2008/12/12/246001.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/Jeffery001/comments/commentRss/246001.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/Jeffery001/services/trackbacks/246001.html</trackback:ping><description><![CDATA[&nbsp;&nbsp; Java 提供了远程debug的功能，这确实是一件很好的事。它能够帮助我们在一些没有虚机的OS（比如HP,AIX，等等）下调试我们的程序。<br />
<br />
&nbsp;&nbsp; 1.<strong>建立Remote debug的准备工作。</strong><br />
&nbsp;&nbsp;&nbsp; a.可以将这些在java命令行中的设置放到一个script中去。例子如下所示：<br />
&nbsp;<br />
&nbsp;&nbsp;&nbsp; java -Xdebug -Xrunjdwp:transport=dt_socket,address=8787,server=y,suspend=y&nbsp; -classpath <br />
&nbsp;&nbsp;&nbsp; 其中，&#8220;-Xdebug -Xrunjdwp:transport=dt_socket,address=8787,server=y,suspend=y&#8221;是必须的。suspend=y---表明是在程序启动后<strong>hang</strong>在那个端口处并监听（如果设为n，则不会<strong>hang</strong>）；address=8787---表明是在远端机器上的端口号。除此之外，在java后也可以添加java的系统环境变量，如-D等等。 &nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp; b.在eclipse中可以通过设立一个remote debug的方式来建立这种连接。 &nbsp; <br />
&nbsp;&nbsp; <strong>2.远程调试时，局部变量的值无法Watch/Inspect问题的解决</strong><br />
&nbsp;&nbsp;&nbsp; 这实际上是由eclipse在build的时候，没有将javac后的option -g加上去。只有当加上 -g这个参数时，所有的调试信息才会被build到class文件中去。<br />
&nbsp;&nbsp;&nbsp; 但ecipse没有提供这样在build时设置参数的user interface。所以，最好的方式就是写一个Ant脚本。<br />
&nbsp;&nbsp;&nbsp; 例子如下，<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp; &lt;?xml version="1.0" encoding="UTF-8" standalone="no"?&gt;<br />
&nbsp;&nbsp;&nbsp; &lt;project basedir="." default="build" name="ssdv"&gt;<br />
&nbsp;&nbsp;&nbsp; &lt;property name="build.location" value="../ssdv_build"/&gt;<br />
&nbsp;&nbsp;&nbsp; <strong>&lt;property name="debuglevel" value="source,lines,vars"/&gt;</strong>&lt;!--必须的--&gt;<br />
&nbsp;&nbsp;&nbsp; &lt;property name="target" value="1.5"/&gt;<br />
&nbsp;&nbsp;&nbsp; &lt;property name="source" value="1.5"/&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp; &lt;target name="init"&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;mkdir dir="bin"/&gt;<br />
&nbsp;&nbsp;&nbsp; &lt;/target&gt;<br />
&nbsp;&nbsp; &nbsp;<br />
&nbsp;&nbsp; &nbsp;<br />
&nbsp;&nbsp;&nbsp; &lt;target name="clean"&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;delete dir="bin"/&gt;<br />
&nbsp;&nbsp;&nbsp; &lt;/target&gt;<br />
&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp; &lt;target depends="init" name="build-project"&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;echo message="${ant.project.name}: ${ant.file}"/&gt;<br />
<br />
<strong>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;javac debug="true" debuglevel="${debuglevel}" destdir="bin" source="${source}" target="${target}"&gt;</strong>&nbsp; &lt;!--必须的--&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;src path="."/&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;classpath refid="ssdv.classpath"/&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/javac&gt;<br />
<br />
&nbsp;&nbsp;&nbsp; &lt;/target&gt;<br />
&nbsp;&nbsp; &nbsp;<br />
&lt;/project&gt;<br />
&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp; 这样，将生成的build工程拷贝到要测试的远程OS。启动脚本，然后就可以看到local variables了。<br />
<img src ="http://www.blogjava.net/Jeffery001/aggbug/246001.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/Jeffery001/" target="_blank">Jeffrey Feng</a> 2008-12-12 17:34 <a href="http://www.blogjava.net/Jeffery001/archive/2008/12/12/246001.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>