专栏首页呼延Intellij Idea远程调试 Java代码

Intellij Idea远程调试 Java代码

前言

线上(真-线上/测试环境)代码出了问题,总是要在本地复现,然后debug,这个过程是在是不太友好,而且线上的很多数据本地没有,经常耽误好久的时间来同步数据.

前文介绍过一种在运行时DEBUG及修改Java代码的方式,阿里开源java动态追踪工具 Arthas的使用.其主要针对的是线上修改代码及JVM实时查看.

但是有很多问题,我们更想要IDE的DEBUG功能,比如线上跑了NPE,本地没有办法复现因为可能是线上的数据问题,这时候就会想,如果可以在线上这里打个断点,就知道是谁为空了.

幸好Java是有远程DEBUG的支持的,而且Intellij-IDEA也实现了相关的功能,今天学习并且记录一下.

启动参数

首先在服务端使用JVM的-Xdebug参数启动Jar包.

java -Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=5555 -jar huyan-demo.jar

参数说明:

  • -Xdebug:JVM在DEBUG模式下工作;
  • -Xrunjdwp:JVM使用(java debug wire protocol)来运行调试环境;
  • transport:监听Socket端口连接方式,常用的dt_socket表示使用socket连接.
  • server:=y表示当前是调试服务端,=n表示当前是调试客户端;
  • suspend:=n表示启动时不中断.
  • address:=8000表示本地监听5555端口。

IDEA配置

服务端以DEBUG模式启动了jar包之后,基本上就完成了,只需要在IDEA中做一些配置,如下图:

添加一个新的启动项,选择Remote,之后在配置信息里面填入你启动的服务端的IP地址调试端口.

之后点击debug按钮,像本地一样的开始debug吧~.

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • Java8新特性——Optional

    在开发中,我们常常需要对一个引用进行判空以防止空指针异常的出现。Java8引入了Optional类,为的就是优雅地处理判空等问题。现在也有很多类库在使用Opti...

    Happyjava
  • 使用idea配置Android开发环境

    安装好IDEA之后安装JDK,版本要 1.8以上(也就是JAVA SE 8及以上),这里推荐安装 JAVA SE 8,因为我安装的就是8,之前的10一直有问题。...

    渔父歌
  • 为什么阿里规约手册要求谨慎使用Arrays.asList方法

    在开发中,有时候会碰到把多个参数,或者说把数组转成List的需求,通常我们会使用 Arrays.asList()方法。但是该方法在使用的过程中,稍有不慎就会出现...

    Happyjava
  • 巩固基础从Java集合类开始,最系统全面的集合类笔记

    来源:https://blog.csdn.net/weizhengzhou520/article/details/81806539

    挨踢小子部落阁
  • 面试题:讲讲Java垃圾回收机制

    本文内容是基于 JDK 1.6 的,不同版本虚拟机之间也许会有些许差异,但不影响我们对JVM垃圾回收机制的整体把握和了解。

    用户1263954
  • Java中的transient关键字

    之前写过一篇序列化相关的文章,今天要讲的这个文件自transient也是跟序列化有关系的。但是,挺多人没有了解过该关键字甚至是不知道该关键字的存在。

    Happyjava
  • 深入理解synchronized底层原理,一篇文章就够了!

    如果某一个资源被多个线程共享,为了避免因为资源抢占导致资源数据错乱,我们需要对线程进行同步,那么synchronized就是实现线程同步的关键字,可以说在并发控...

    挨踢小子部落阁
  • Java 线程池架构原理和源码解析(ThreadPoolExecutor)

    使用Executors最常用的莫过于是使用:Executors.newFixedThreadPool(int)这个方法,因为它既可以限制数量,而且线程用完后不会...

    用户4143945
  • 大牧絮叨设计模式:工厂方法模式

    工厂方法模式是一种创建模式,又被称为虚拟构造子模式(Virtual Constructor)或者多态性工厂模式(Polymoriphoic Factory)。工...

    大牧莫邪
  • Kafka消费者 之 如何进行消息消费

    放弃不难,但坚持很酷~由于消费者模块的知识涉及太多,所以决定先按模块来整理知识,最后再进行知识模块汇总。

    create17

扫码关注云+社区

领取腾讯云代金券