在本地开发过程当中,对代码进行Debug能逐行对代码逻辑进行调试,方便准备的排查问题。可是当代码发布到线上时,若是运行过程当中出现异常,仅仅依靠日志来排查问题的话,会比较耗时,并且常常因为日志不全等缘由而不能快速准肯定位问题,而经过对JAVA代码进行远程Debug能很好的解决这个问题。
这篇博文主要介绍在IDEA中配置JAVA代码远程Debug,以及须要注意的事项。java
咱们知道,Java 程序是统一以字节码的形式运行在Java 虚拟机上的,由于都是字节码文件,因此只要本地代码和远程服务器上的类文件相同,两个JVM就能够经过调试协议进行通讯。这里须要注意的是,被调试的服务器须要开启调试模式,服务器端的代码和本地代码必须保持一致,不然断点没法进入。spring
在IDEA中进行JAVA代码的远程Debug,须要作两步准备工做。服务器
项目类型:Spring Boot项目
JDK版本:1.8.0_131
项目启动命令:java -jar -Dspring.profiles.active=development -Xms1024m -Xmx1024m -Xmn600m -agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=4001 -XX:-OmitStackTraceInFastThrow -XX:+UseG1GC -XX:G1ReservePercent=25 -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=log -XX:+PrintGCDetails -XX:+PrintGCDateStamps -Xloggc:log/gc.log smart-building.jar
其中开启远程debug的配置是:
-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=4001
参数说明:
jdwp:java debug wire protocol
transport=dt_socket:以socket协议进行通讯
server=y:开启调试服务端
address=4001:通讯端口是4001socket
Host表示远程服务端的IP地址。
Port表示跟远程服务端进行Debug通讯的端口。
Command Line表示启动参数,注明开启远程Debug。
Use module classpath 表示远程服务对应的本地代码路径。ide
当在IDEA控制台输出这行日志,说明本地IDEA已链接上了远程服务的Debug端口,接下来能够跟调试本地代码同样,开始远程代码Debug。ui