使用IDEA进行JAVA代码的远程Debug

在本地开发过程中,对代码进行Debug能逐行对代码逻辑进行调试,方便准备的排查问题。但是当代码发布到线上时,如果运行过程中出现异常,仅仅依靠日志来排查问题的话,会比较耗时,而且经常由于日志不全等原因而不能快速准确定位问题,而通过对JAVA代码进行远程Debug能很好的解决这个问题。
这篇博文主要介绍在IDEA中配置JAVA代码远程Debug,以及需要注意的事项。

我们知道,Java 程序是统一以字节码的形式运行在Java 虚拟机上的,因为都是字节码文件,所以只要本地代码和远程服务器上的类文件相同,两个JVM就可以通过调试协议进行通信。这里需要注意的是,被调试的服务器需要开启调试模式,服务器端的代码和本地代码必须保持一致,否则断点无法进入。

在IDEA中进行JAVA代码的远程Debug,需要做两步准备工作。

一、远程服务器端的JAVA代码开启调试模式。

项目类型: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:通信端口是4001

二、IDEA中的参数配置

1. 打开远程Debug参数配置窗口

2. 配置Debug参数,

Host表示远程服务端的IP地址。
Port表示跟远程服务端进行Debug通信的端口。
Command Line表示启动参数,注明开启远程Debug。
Use module classpath 表示远程服务对应的本地代码路径。

3. 点击Debug图标,开始Debug

当在IDEA控制台输出这行日志,说明本地IDEA已连接上了远程服务的Debug端口,接下来可以跟调试本地代码一样,开始远程代码Debug。

三、注意事项

  1. 当开启远程Debug后,任何能走到断点的操作都会导致业务阻塞到断点位置,从而影响业务流程的正常执行,所以最好选择没什么用户操作的时候进行远程Debug调试。
  2. 远程Debug调试过程中,结束调试不会导致远程业务流程终止,线上业务会继续执行。

原文地址:https://blog.51cto.com/andrewli/2395091

时间: 2024-09-29 10:35:18

使用IDEA进行JAVA代码的远程Debug的相关文章

java war包 远程debug出现的问题解决,学会查看日志

开启远程debug之后,8005 关闭tomcat 又启动不了了.. netstat -lnp 未发现8005接口 eclipse 内远程链接到服务器,debug 下发现服务器线程启动也存在问题.很多线程未启动 一段时间后又发现启动正常了,看来只有8005端口收到影响,但是这服务器启动的不太流畅 咋整只能通过日志文件查看了 进入tomcat目录 主要下边的两个文件 启动用时143秒,挺长的, 没有很明显的报错信息.... 28-Sep-2019 12:25:26.884 INFO [localh

利用Eclipse进行远程Debug

这项功能真的十分赞,当我不想写junit test,又想调试在实际环境中才能起作用的Java程序,远程debug真的是太好用了. 参数:java -jar -Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=8044 com.liferay.blade.cli.jar server start 把jar包拷出来直接用命令行运行即可

远程debug调试java代码

远程debug调试java代码 日常环境和预发环境遇到问题时,可以用远程调试的方法本地打断点,在本地调试.生产环境由于网络隔离和系统稳定性考虑,不能进行远程代码调试. 整体过程是通过修改远程服务JAVA_OPTS参数,然后本地通过Eclipse或IDEA等工具调试. 下面简单介绍下理论. 理论 JPDA(Java Platform Debugger Architecture)是Java平台调试体系结构的缩写.由3个规范组成,分别是JVMTI(JVM Tool Interface),JDWP(Ja

Tomcat使用MyEclipse远程调试Java代码配置详解

Tomcat使用MyEclipse远程调试Java代码总结如下:在做远程调试时,在windows系统和非windows系统下的配置,Tomcat中会有所差别,具体如下: 第一步.配置tomcat一.在windows系统中:打开%CATALINE_HOME%/bin下的文件catalina.bat,加入下面这行:set CATALINA_OPTS=-server -Xdebug -Xnoagent -Djava.compiler=NONE -Xrunjdwp:transport=dt_socket

用Eclipse进行远程Debug代码 (转)

来自:http://blog.csdn.net/fyq891014/article/details/7534711 首先你本地Eclipse上要有和部署在远程服务器一至的项目,否则debug的时候会出现代码行错位,难以达到debug的效果.例如:如果你本地的代 码加了行,修改了,或减了一行.而远程服务器上的项目没有变化,则debug的时候会发现行号不对,或debug出来的值有偏差等. 1.打开Eclipse,点击左上角的debug按钮,如图: 2.点击上图的红色区域 3.双击上图的红色区域 4.

用Eclipse进行远程Debug代码

首先你本地Eclipse上要有和部署在远程服务器一至的项目,否则debug的时候会出现代码行错位,难以达到debug的效果.例如:如果你本地的代 码加了行,修改了,或减了一行.而远程服务器上的项目没有变化,则debug的时候会发现行号不对,或debug出来的值有偏差等. 1.打开Eclipse,点击左上角的debug按钮,如图: 2.点击上图的红色区域 3.双击上图的红色区域 4.Project:选择你要debug的项目,Host:输入你的远程IP,Port:远程调用端口.如何知道远程端口,通过

java项目 远程debug

AVA项目无法像PHP那样可以随时修改文件内容进行调试,调试可以借助eclipse,本地代码的话很容易在本地debug,但如果代码已经打包部署在linux上呢?可以进行远程debug 很简单,只需要在java应用启动脚本中加入“-agentlib:jdwp=transport=dt_socket,address=8000,server=y,suspend=y” 远程debug的端口就是8000了的 再借助于eclipse 然后debug该应用就可以了的 前置条件:本地的代码需要和远程服务器一致

java代码实现网络远程开机

http://my.oschina.net/kingfire/blog/156764 概述 远程开机(Wake onLAN)是指通过网络实现对服务器或者pc启动运行,现在很多网卡都支持的这个功能. 其原理简单来说是向目标主机发送特殊格式的数据包, 目标主机收到后,对系统进行启动. 具体方法. 设置bios开启Wake onLAN(WOL)功能 查看主机网卡的mac地址 将主机通过网卡连接到以太网上 发送开机编码,启动系统 其实就是通过socket向目标的机器发送MagicPacket(魔术包),

JAVA类项目如何开启远程DEBUG模式?TOMCAT,JETTY等容器启动也可以DEBUG,以及JAVA远程连接JMXREMOTE

-Xdebug -Xnoagent -Xrunjdwp:transport=dt_socket,address=8000,server=y,suspend=n 上面这一行是用来启动远程DEBUG的,端口为8000,suspend表示容器在启动的时候是否debug,可以看到tomcat或jetty启动的内部过程  -Dcom.sun.management.jmxremote.port=9999 -Dcom.sun.management.jmxremote.authenticate=false -D