如何使用idea远程debug调试代码详解

一、idea远程debug原理

远程调试,需要调试服务器上的程序时,远程调试就显得非常有用。JAVA 支持调试功能,本身提供了一个简单的调试工具JDB,支持设置断点及线程级的调试同时,不同的JVM通过接口的协议联系,本地的Java文件在远程JVM建立联系和通信。

    本地代码监听远程调试端口,在在本地需要调试代码打下断点。 访问远程服务。 远程服务触发idea编辑器本地代码,本地代码进入debug状态。 在本地调试代码,解决代码bug。

简单流程如下:

二、创建一个springboot工程

之前已经介绍过很多创建springboot工程的文章了,可以参考这篇文章:

三、IDEA远程调试配置

1,打开idea,顶部菜单栏选择Run-> Edit Configurations,进入下图的运行/调试配置界面。

2,点击左上角+号,选择Remote。分别填写右侧三个红框中的参数:Name,Host(想要指定的远程调试端口)。

3,点击界面右下角应用按钮即可。

四、服务端开始debug模式

java -agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=5005 -jar spring-boot-mybatis-plus-0.0.1-SNAPSHOT.jar

五、idea启动远程调用

程序上打上断点,点击运行。调用服务器端运行的系统程序,系统自动进入断点。

六、启动远程调试参数解释

  1. -Xdebug:通知JVM工作在调试模式下
  2. -Xrunjdwp:通知JVM使用(java debug wire protocol)来运行调试环境。参数同时有一系列的调试选项
    transport:指定了调试数据的传送方式,dt_socket是指用SOCKET模式,另外dt_shmem指用共享内存方式,其中dt_shmem只适用于窗口平台.server 参数是指是否支持在服务器模式的虚拟机中。 server参数是指是否支持在server模式的VM中。 onthrow:指明当产生该类型的异常时,JVM就会中断下来,进行调式该参数任选。 launch指明,当JVM被中断下来时,执行的可执行程序。该参数可选。 suspend指明,是否在调试客户端建立起来后,再执行JVM。 onuncaught(= y或n)指明出现未捕获的异常后,是否中断JVM的执行。
经验分享 程序员 微信小程序 职场和发展