IDEA远端调试基于SSM的Java web项目

首先,灵感来源于这个帖子<https://www.jianshu.com/p/f902ac5d29e4&gt;
在日常开发过程中发现,有些项目由于本地网关或者数据库的限制,不方便本地调试,于是就想到了是否可以远端调试。网上一搜还真有这种操作,感谢Tomcat的支持。但是网上很多人都是乱写乱转帖,丝毫没有借鉴意义,最后导师推给我一个帖子(上面的连接),试了试感觉讲得挺清晰,但是还是有些没说清楚的地方,于是在这里总结一下。

环境与适用范围

系统:支持IDEA的操作系统
IDE:能创建远程调试服务的IDEA
Java版本:![image.png](https://segmentfault.com/img/bVbBSBS "image.png")根据说明,我感觉似乎现在能见到的Java版本都能进行调试
Tomcat版本:拿7.0试的,7以及更高应该都行
项目类型:测试拿基于SSM的Java web项目进行的,估计能放进tomcat容器的项目类型都支持

远程调试原理

远程调试,本质上就是本地通过socket通信,对远端Tomcat发送调试指令,由一个远程的操作进行本地调试。本质上也可以视为是远程跑服务的机器上面有一个IDEA,可以进行debug操作,然后你在另外一台机器上,登录远程桌面,访问那台机器,然后操作IDEA进行调试。

操作

这个原理看上去并不难,所以具体的操作总共分3步:

1. 本地IDEA配置,创建一个远端debug job

![image.png](https://segmentfault.com/img/bVbBSFZ "image.png")
![image.png](https://segmentfault.com/img/bVbBSG6 "image.png")
新建一个remote debug job。
![image.png](https://segmentfault.com/img/bVbBSHL "image.png")
给这个job起个名字,配置Debugger mode与Transport如图所示,然后配好远端tomcat服务器的IP和端口号(这个根据你的项目来确定),配置完之后,下面的Command line就会自动生成,选择好JDK版本之后,Command line就会变成适用于当前JDK版本的指令格式,然后在下方选好你要调试的项目模块。记下Command line的内容,下一步要用Apply然后OK。这样本地配置就完成了。(注:不同版本IDEA这个界面的样式略有不同,找到对应的就好)

2. 给远端tomcat配置,使之支持接收远端调试指令。

通过各种方式访问你的tomcat所在目录,进入tomcatXXX/bin/ linux系统下找到catalina.sh文件,如果是windows系统,那就找到catalina.bat文件。
![image.png](https://segmentfault.com/img/bVbBSJq "image.png")
在# OS specific support. $var must be set to either true or false.这一行上面加一行:
export JAVA_OPTS='xxxxx'
''这里面是我们刚才保存的Command line的内容,图中是我自己的配置。
保存退出,重启tomcat,让它加载最新的配置文件。项目启动起来之后,我们就可以开始远程debug了。

3. 开始调试

在开始调试之前,要有几个准备工作:
首先,远程tomcat要启动
然后,保证本地代码与远端的打包文件一致
选中remote debug job之后点击debug按钮![image.png](https://segmentfault.com/img/bVbBSKI "image.png")
当你的debug console出现:
![image.png](https://segmentfault.com/img/bVbBSKX "image.png")
如果出现如图结果,说明你已经与远端建立了调试连接,可以开始远端调试了。本地打断点,调用远端项目的方法,就可以在本地进行debug操作了。

声明:该文章系转载,转载该文章的目的在于更广泛的传递信息,并不代表本网站赞同其观点,文章内容仅供参考。

本站是一个个人学习和交流平台,网站上部分文章为网站管理员和网友从相关媒体转载而来,并不用于任何商业目的,内容为作者个人观点, 并不代表本网站赞同其观点和对其真实性负责。

我们已经尽可能的对作者和来源进行了通告,但是可能由于能力有限或疏忽,导致作者和来源有误,亦可能您并不期望您的作品在我们的网站上发布。我们为这些问题向您致歉,如果您在我站上发现此类问题,请及时联系我们,我们将根据您的要求,立即更正或者删除有关内容。本站拥有对此声明的最终解释权。