远程调试非常有用,尤其是在本地开发psdsb的情况下,如果需要调试服务器上的程序。
JAVA支持调试功能,它本身提供简单的调试工具JDB,支持断点设置和线程级调试,同时不同的JVM通过接口的协议连接,本地JAVA文件这篇是Intellij IDEA远程调试教程的总结和原理说明,我知道,但也知道它的原因。
本机Intellij IDEA远程调试配置
1 )打开Inteliij IDEA,从顶部菜单栏中选择运行编辑配置,进入下图的运行/调试配置屏幕。
2 .点击左上方的“”,选择Remote。 在右侧的三个红色框中分别输入参数“Name,Host”。
3、点击界面右下角的应用按钮即可。
第二,在服务器端打开调试模式,添加JVM启动参数以支持服务器端的catalina.sh文件,在Tomcat安装目录下,本地复制、编辑,然后在第一行中填充爸爸
文本:
catalina _ opts='-xdebug-xrunjdwp : transport=dt _ socket,server=y,suspend=n,address=8089 '
添加配置后,重新启动tomcat即可生效。 (shutdown.sh /startup.sh )。 到此为止,开始远程调试。
三. Intellij IDEA发起远程呼叫
最后,打开IDEA,在程序中包含断点,使运行模式远程,然后单击运行。 调用在服务器端运行的系统程序时,系统会自动进入断点
4、为什么可以远程调试,其背后的原理是什么? 首先,理解以下Java程序的执行过程。 分为以下步骤。 Java的文件---编译生成的类文件(class文件) JVM加载类文件(JVM执行类字节码文件) JVM转换器翻译成各机器识别的不同机器码。
远程调试原理众所周知,Java程序在Java虚拟机(JVM )上运行,具有很好的跨平台性。 这是因为Java程序在JVM中作为字节码统一运行,不同平台的虚拟机统一使用此相同的程序存储格式。 由于这两个文件都是类字节码文件,因此如果本地代码和远程服务器上的类文件相同,则两个JVM将通过调试协议进行通信。 例如,通过套接字在同一端口进行通信。 另外,如果需要注意,调试对象的服务器必须打开调试模式,如果服务器端的代码和本地代码不匹配,就会出现断点无法进入的问题。
代码Java /代码调试器体系结构
该体系结构本质上是JVM,只要使本地Java的源代码与目标APP应用程序相匹配,就可以通过套接字将本地Java的源代码连接到远程JVM并执行调试。 在该套接字连接模式(稍后描述)中,本地只要具有源代码,就可以不启动本地Java的APP应用。
传输方式,默认为套接字;
套接字: MACOS、Linux系统使用该传输方式;
共享内存: WINDOWS系统使用这种传输方式。
调试模式,默认值为Attach;
Attach (在此模式下为调试服务端)调试并远程运行的计算机)启动端口,等待我们(调试客户端)连接。
套接字:在此模式下,我们(调试客户端)监听端口,并在调试服务端准备好时进行连接。
配置属性说明补充1.idea的服务的开放调试模式设定详细说明、
文本:
catalina _ opts='-xdebug-xrunjdwp :传输=dt _ socket,server=y,suspend=n,address=8089' 2.每个参数指定了调试数据的传输方法。 dt_socket是指套接字模式,dt_shmem是指共享内存方式。 其中,dt_shmem表示服务器模式的虚拟机是否支持窗口平台. server参数。 onthrow :表示如果发生此类型的异常,JVM将中断,并且可以任意调整此参数。 代码发行/代码:显示JVM中断时运行的可执行程序。 此参数是可选的代码片段/代码。 指示是否在建立调试客户端后运行JVM。 onuncaught(=y或n )指示出现未捕获的异常后是否中断JVM的运行。 3.IDEA设置远程属性的说明。 以下是谷歌翻译