eclipse远程调试Tomcat, Hadoop集群等

主导是JPDA(Java Platform Debugger Architecture), 它支持java中的各种调试,由两个接口(JVM Tool Interface和JDI)、一个协议(JDWP)和两个用于合并它们的软件组件(后端和前端)组成。参见http://www.ibm.com/developerworks/cn/opensource/os-eclipse-javadebug/

JDWP(Java Debug Wire Protocol):JVM支持远程调试,eclipse也支持JDWP,所以只要在各个模块的JVM启动时添加如下参数即可:

-Xdebug -Xrunjdwp:transport=dt_socket, address=8000,server=y,suspend=y

-Xdebug是在启动调试

-Xrunjdwp是启动JDWP调试的实现,后面的是对于JDWP的参数:

transport=dt_socket.JDWP front-end 和 back-end之间的传输方法。当前选项表示是使用socket传输。

address=8000. 监听调试的端口

server=y. 表示当前启动的是被调试的对象。n就是表示当前启动的是调试对象。

suspend=y. 表示当前启动的JVM会暂时等待,知道调试器连接上才会继续执行。这样给对方以准备参与debug的时间。n就不会等待了。



Tomcat-------- 把tomcat的bin下的catalina.bat或则catalina.sh中的参数CATALINA_OPTS改为上面的

Hadoop-------- 把hadoop的conf下的hadoop-env.sh里的HADOOP_NAMENODE_OPTS改为上面的

Hbase--------- 把hbase的conf下的HBASE_MASTER_OPTS。。。。


综上一下,基本上这些远程调试的改写地方都是在启动文件里的**OPTS参数,或者就是一些configuration文件的property名为OPTS的参数,这些文件的位置除了conf就是bin。至于eclipse这边的配合,就是new一个remote debug configuration,写上远程IP和端口:


就ok了。记得要先启动被调试的JVM,然后再去连接调试。因为我们的suspend参数多数是y。(自己看着办了)

你可能感兴趣的:(eclipse,tomcat,debug,调试,HADOOP集群)