[size=4]原文地址:

[color=FF0000][url]http://www.591pic.com/read-htm-tid-46.html[/url][/color][/size]

[size=3]其实远程调试的功能是Java本生具备的,Eclipse只是将其工具化,更好用。


1,新建一个Java项目
2,新建一个Class,RDebug.java

这个类很简单,提示输入,打印用户的输入。
现在想远程调试这个类。我们在远端机器上运行,在本机Eclipse中进行调试。


首先要部署到远程服务器上,确认可以运行后,我们增加启动参数,打开Java的远程调试
$ java -agentlib:jdwp=transport=dt_socket,address=8082,server=y,suspend=y RDebug


需要关心的是address 和 suspend
address是调试的监听端口(也可加上IP地址)
suspend表示是否等待监听。y表示只有远程连接上才开始运行程序。n表示直接运行不等待,但中途也可以被远程调试打断。
(更多参数意义可查询相关网站)


启动后我们还是设置Eclipse进行远程调试。Server上的程序并不关闭,否则Eclipse无法找他调试端口。




打开Debug…

[img]http://lh4.ggpht.com/_i85srjC3dE4/SRhhq-1QFkI/AAAAAAAAAB4/AIKvwJafBuo/s640/Screenshot-1.png[/img]



新建一个Remote Java Application,选择调试的项目,被调试程序所在ip地址和端口(与启动时候address参数的端口相同)

[img]http://lh5.ggpht.com/_i85srjC3dE4/SRhhr2rhhpI/AAAAAAAAACQ/emQkqm4ISm0/s640/Screenshot-Debug.png[/img]





开始Debug,这时候远程调试已经连接上,Sever上的程序开始运行。给System.out.println(input)打上断点。

[img]http://lh4.ggpht.com/_i85srjC3dE4/SRhhrMhfTUI/AAAAAAAAACA/DfT8gM3bobI/s720/Screenshot-2.png[/img]



这时Sever上的程序己可以在本机上调试了。可以发现当前调试信息中input的值没有显示,因为远程调试只能显示当前方法中传入的参数,想看到input的指可以F5进入到pintln()中查看[/size]