lchl0388 发表于 2017-1-21 09:35:13

Java_tomcat配置远程调试

  ref: http://www.ibm.com/developerworks/cn/opensource/os-eclipse-javadebug/index.html
  在做远程调试时,在windows系统和非windows系统下的配置,Tomcat中会有所差别,具体如下:
  第一步、配置tomcat
  1、在windows系统中:
  打开%CATALINE_HOME%/bin下的文件catalina.bat,加入下面这行:
  set CATALINA_OPTS=-server -Xdebug -Xnoagent -Djava.compiler=NONE -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=8000
  这是在tomcat启动时设置一些虚拟机参数,使服务器允许远程连接功能。其中 address=8000是远程连接的端口号(可以设置成任意其他不冲突端口)。连接方式有两种,为dt_shmem和dt_socket,分别表示本机调试和远程调试。(其他的应用服务器比如weblogic也应该可以设置这些参数,有兴趣的可以测试。)
  2、在非windows系统中:
  还需要把%CATALINE_HOME%/bin/startup.sh中
  CATALINA_OPTS="-server -Xdebug -Xnoagent -Djava.compiler=NONE -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=8000"
  也就是把SET去掉,后面加双引号引起来,因为在Linux下,是没有SET这个语法的。
  最后一行exec "$PRGDIR"/"$EXECUTABLE" start "$@" 中的start改成jpda start。由于默认的端口是8000,所以如果8000端口已有他用的话,还需在catalina.sh文件中设 置:JPDA_ADDRESS=8000。
  输入命令startup.sh或者catalina.sh jpda start就可启动tomcat。
  (
  注:
  在linux下出现错误时
  ERROR: Cannot load this JVM TI agent twice, check your java command line for duplicate jdwp options.
  将-Xrunjdwp:transport=dt_socket,address=8000,server=y,suspend=n 去掉。
  )
  这样就Ok了,重启动tomcat(远程),可以直接独立启动,而不用在eclipes的插件中启动。如在控制台输出“Listening for transport dt_socket at address: 8000”,即说明在tomcat中设置成功。
  第二步、配置eclipse
  Eclipse中,Run > Debug Configurations,在弹出对话框中右击Remote Java Application新建一个远程调试项,如下所示:

 
  1、在 “Name”输入框中输入远程调试的名称,在“Project”中选择要调试的项目,在“Host”中输入需要远程调试项目的IP,也就是tomcat所 在的IP,在“Port”中输入设置的端口号,比如上面设置的8000,然后钩选“Allow termination of remote VM”,点击“Apply”即可。点debug就可以进入debug状态了
  2、在本机设置断点;
  3、访问你的测试页面即可看到久违的调试界面。
  但每次做上述操作非常烦,不如写个批处理,如取名为Tomcat debug.bat,在这个文件中加入下面几行:
  cd %CATALINE_HOME%/bin
  set JPDA_ADDRESS=8000
  set JPDA_TRANSPORT=dt_socket
  set CATALINA_OPTS=-server -Xdebug -Xnoagent -Djava.compiler=NONE -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=8787
  startup
  将此脚本保存到tomcat/bin目录下,这样需要远程调试时,运行debug.bat即可;不需要远程调试时,还是运行startup.bat文件
页: [1]
查看完整版本: Java_tomcat配置远程调试