在项目中,会遇到一些问题,本地测试正确,测试环境测试也正确,但线上环境却出现问题,因为线上环境又缺乏一些必要的问题定位手段,这时能够经过远程调试来调试程序。但原则上,咱们仍是尽量经过业务逻辑、代码分析、日志定位来解决线上问题,远程调试是一把双刃剑,可能解决线上问题,但也可能致使线上出现新的问题。vim
本文以Tomcat7+eclipse+Centos6.5为环境,描述如何进行远程调试。tomcat
在catalina.sh中添加以下:服务器
CATALINA_OPTS="-Xdebug -Xrunjdwp:transport=dt_socket,address=8000,server=y,suspend=n"eclipse |
参数说明以下:socket
-Xdebugtcp |
启用调试模式测试 |
-Xrunjdwp<sub-options>spa |
加载JVM的JPDA参考实现库debug |
transport=dt_socket调试 |
Socket链接,可选dt_shmem 经过共享内存的方式链接到调试服务器 |
address=8000 |
调试服务器监听的端口 |
server=y |
是不是服务器端,n为客户端 |
suspend=n |
启动过程是否加载暂停,y为启动时暂停,方便调试启动过程 |
vim /etc/sysconfig/iptables 添加一行: -A INPUT -p tcp -m state --state NEW -m tcp --dport 8000 -j ACCEPT 而后重启防火墙使其生效(开放的端口8000须要和tomcat中配置的8000一致) service iptables restart |
1) 打开debug
2) 设置debug
3) 执行debug
设置完毕后,点击“Debug”按钮,在代码中打上断点,程序运行到断点后,就能够看到效果,具体如图:
点击红框内的按钮,能够取消远程调试。