工具篇-IDEA远程Debug连接Tomcat

1.应用场景

当项目在线上环境时,我们发现了一些线上bug,那此刻我们就可以远程Debug,打断点单步调试,解决bug。


2.具体设置步骤(windows下举个例子)

1) 开启debug端口,启动tomcat
工具篇-IDEA远程Debug连接Tomcat_第1张图片

将项目部署到tomcat中,war包文件放入webapps目录即可。
工具篇-IDEA远程Debug连接Tomcat_第2张图片

tomcat启动时,并启动JPDA(Java Platform Debugger Architecture,Java平台调试架构)
工具篇-IDEA远程Debug连接Tomcat_第3张图片

访问一下你的web服务,试一试
工具篇-IDEA远程Debug连接Tomcat_第4张图片


2) 在Intellij idea中远程连接tomcat
在idea打开你部署到tomcat的项目
工具篇-IDEA远程Debug连接Tomcat_第5张图片

在弹出的菜单中点击“+“,再点击“Remote“:
工具篇-IDEA远程Debug连接Tomcat_第6张图片

设置完毕后点击下面的“ok“,回到主窗口后,点击下图红框中的下拉菜单,选中我们刚才新建的debug配置项,再点击蓝圈中的小虫按钮,就能连接到tomcat的debug端口了:
工具篇-IDEA远程Debug连接Tomcat_第7张图片

3)我们远程Debug一下
我们在本地项目打一个断点
工具篇-IDEA远程Debug连接Tomcat_第8张图片

工具篇-IDEA远程Debug连接Tomcat_第9张图片

工具篇-IDEA远程Debug连接Tomcat_第10张图片


OK,到这里我们就学会怎么远程Debug了。下面想了解原理的继续看:

debug原理:

调试器和被调试程序是通过中断系统来实现的,不过在Windows下封装了一套完整的调试接口。你只要建立一个调试器,用它打开一个被调试进程,然后根据调试的目标中所包含的调试信息找出源代码与机器码之间的对映关系,在你要中断的地方加个int3指令,代码为0xcc,当目标执行带int3时,就产生一个中断,目标程序停止,并将运行状态保存下来,由操作系统托管。
在Windows下,你的调试器就会接收到一个中断消息,并得到目标程序运行的状态(所有的寄存器),你在调试器中把状态中的IP寄存器的值减1,然后把那个位置的int3指令还原成它原来的值,再返回中断,这时候目标程序就可以继续运行下去.这样就实现了一个 “断点 “.当然,你也可以在目标进行中断的时候修改它的内存空间或着寄存器,这样就可以实现动态修改变量的值。如果你把跟踪标志设为1,这时候你的系统就进入跟踪状态,每执行一条机器指令就会产生一个中断,当进行中断时,系统会自己保存当时的运行状态,然后全速运行你的中断代码,在Windows下,你的调试器同样会收到相应的消息,这时你只要对目标做相应的处理就可以实现对目标的跟踪.

什么是JPDA呢

JPDA(Java Platform Debugger Architecture) 是 Java 平台调试体系结构的缩写,通过 JPDA 提供的 API,开发人员可以方便灵活的搭建 Java 调试应用程序。JPDA 主要由三个部分组成:Java 虚拟机工具接口(JVMTI),Java 调试线协议(JDWP),以及 Java 调试接口(JDI)。而像Eclipse和IDEA这种开发工具提供的图形界面的调试工具,其实就是实现了JDI。

你可能感兴趣的:(工具使用,remote,远程debug,idea,tomcat)