有时候开发环境下没有问题的程序,在测试或生产环境下却有bug,这时候我们需要远程调试,debug出问题所在
Eclipse
Tomcat
第一步、配置tomcat
一、在windows系统中:
修改tomcat的启动脚本startup.bat。复制startup.bat为startup-debug.bat,然后打开startup-debug.bat,找到call "%EXECUTABLE%" start %CMD_LINE_ARGS%这一行,修改为“call "%EXECUTABLE%" jpda start %CMD_LINE_ARGS%”,然后在上面添加三行:
set JPDA_TRANSPORT=dt_socketset JPDA_ADDRESS=8787set JPDA_SUSPEND=n
address=8787 是没被使用的端口号,dt_socket表示远程调试。
如下图所示:
二、Linux系统中:
把%CATALINE_HOME%/bin/startup.sh中的最后一行exec"$PRGDIR"/"$EXECUTABLE" start "$@" 中的start改成jpda start .由于默认的端口是8000,所以如果8000端口已有他用的话,还需在catalina.sh文件中设置:JPDA_ADDRESS=8787。
输入命令startup.sh或者catalina.sh jpda start启动tomcat。
配置完tomcat后重新启动tomcat,如在控制台输出"Listening for transport dt_socket at address:8787",即说明在tomcat中设置成功!
第二步、配置eclipse:
在eclipse中选择Run->Debug Configurations->Remote Java Application新建一个远程调试项。在“Name”输入框中输入远程调试的名称,在“Project"中选择要调试的项目,在"Host"中输入需要远程调试项目的IP,也就是tomcat所在的IP,在”Port“中输入设置的端口号,比如上面设置的8787,然后勾选"Allow termination of remote VM" ,点击"debug"即可。如下图:
最后在本地的项目代码中设置断点,就可以正常调试了。
保证要远程调试的代码和本地代码一致
需要远程调试时,运行startup-debug.bat,不需要远程调试时,运行startup.bat