java程序员必会的远程debug教程

目录
  • 正文
  • 启动添加参数
  • 配置idea
    • 点击 editConfigurations...
    • 点击左上角的+号,选择Remote Jvm Debug
    • 填写地址和端口号
  • 启动debug模式
  • 测试

正文

现在都是拆分的比较细的微服务了,当系统运行在测试环境出现问题的时候,就需要按照日志来分析出什么问题了。有的能看出来,要是年久失修的老项目,那么说不定连log都没有。纯纯的看源码找问题,效率就很低了。

其实这个时候还可以远程debug,来更精确的定位问题。效率也是高高滴。

这个之前在工作中其实一直在使用,但是不知道咋配置的,今天就找了一些资料,自己实际配置了一下。

下边我们介绍下如何操作:

启动添加参数

启动的时候添加如下参数:

java -agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=192.168.1.101:7891 -jar demo-0.0.1-SNAPSHOT.jar

参数大概讲一下:

transport 指定了调试数据的传送方式,dt_socket是指用SOCKET模式,另有dt_shmem指用共享内存方式,其中,dt_shmem只适用于Windows平台;

address 调试服务器的端口号,客户端用来连接服务器的端口号;

server=y/n VM 是否需要作为调试服务器执行;

suspend=y/n 是否在调试客户端建立连接之后启动 VM;

启动成功后显示如下:

配置idea

我我们可以去idea配置了。

点击 editConfigurations...

点击左上角的+号,选择Remote Jvm Debug

填写地址和端口号

点击apply,点击OK

启动debug模式

这时就可以点击debug按钮启动了

成功会有如下提示:

测试

编写测试代码如下:

@Slf4j
@RestController
@RequestMapping("test")
public class TestDebug {
    @GetMapping(value = "debug/{num}")
    public String verifyNum(@PathVariable Integer num) {
        int a = num;
        log.info("接收到参数{}",a);
        return "ok";
    }
}

当使用浏览器访问这个接口,并在log位置添加断点的时候

http://192.168.1.101:8080/test/debug/1

就会走进断点,并显示我们传入的值。

这个时候就可以愉快的debug啦。

以上就是java程序员必会的远程debug教程的详细内容,更多关于java远程debug的资料请关注我们其它相关文章!

(0)

相关推荐

  • springboot如何去除debug日志

    目录 springboot去除控制台打印的debug日志 1.创建logback-spring.xml文件 2.给application.properties文件 无法控制springboot中的debug日志 问题 最后试了一下,这样解决的 springboot去除控制台打印的debug日志 1.创建logback-spring.xml文件 文件内容如下 <?xml version="1.0" encoding="UTF-8"?> <config

  • Pycharm 如何连接远程服务器并debug调试

    目录 1 设置链接的账号密码: 2.1 终端界面连接服务器: 2.2 使用pycharm查看linux服务器上的各种文件,并且使用pycharm编辑器界面直接修改和保存代码. 3 使用pycharm连接远程服务器,使用远程服务器环境,实现代码在本地的运行.调试 3.1 配置连接: 3.2 配置映射关系 3.3 同步代码 3.4 配置远程解释器作为运行环境 3.5 在打开本地代码,进行运行调试!!!! 写在最后的测试小tip 环境说明:本人pycharm是2021.3.3,其它版本设置界面可能略有

  • Springboot允许logger.debug输出日志方式

    目录 Springboot允许logger.debug输出日志 SpringBoot启动debug级别日志报错 错误截图 原因 解决办法 Springboot允许logger.debug输出日志 说实话对日志这东西一直只是太肤浅的懂,就会用logger.info和logger.error输出,今天在写LemonRobot项目的时候,决定把调试信息也打出来,然后根据日志级别控制让上线的时候不显示debug级别的日志. 但是运行后发现,默认logger.debug产生的日志也没有输出到控制台,经过一

  • IDEA中Debug调试VUE前端项目调试JS只需两步

    目录 前言 第一步,找到jsdebug运行时 第二步.打断点.运行jsdubg项 结语 前言 有一个礼拜没发quarku+graalvm相关的内容了,因为博主在忙一个新的前端项目去了,从element-ui切换到antdv,也有很多新的东西需要一边啃文档一边输出,程序出现bug自是在所难免的,所以需要开发工具可以非常方便的debug程序. 在java开发中,debug就是一个debug启动按钮解决的事情,而在前端开发中,IDEA这个开发工具也提供了非常好用的jsdebug工具,博主的这个用法不是

  • IntelliJ IDEA远程Debug Linux的Java程序,找问题不要只会看日志了(推荐)

    1 前言 我们习惯于在本地开发的时候debug,能快速定位与解决问题,那部署在服务器上是不是就没有办法了呢?只能通过查看日志来定位? 不是的,在远端的服务器上,我们一样可以debug. 2 IDEA的debug 我们先来看一下在IntelliJ IDEA直接debug是怎样的. 先准备一个简单的Java程序: package com.pkslow.basic; import java.util.Map; public class RemoteDebug { public static void

  • java程序员必会的远程debug教程

    目录 正文 启动添加参数 配置idea 点击 editConfigurations... 点击左上角的+号,选择Remote Jvm Debug 填写地址和端口号 启动debug模式 测试 正文 现在都是拆分的比较细的微服务了,当系统运行在测试环境出现问题的时候,就需要按照日志来分析出什么问题了.有的能看出来,要是年久失修的老项目,那么说不定连log都没有.纯纯的看源码找问题,效率就很低了. 其实这个时候还可以远程debug,来更精确的定位问题.效率也是高高滴. 这个之前在工作中其实一直在使用,

  • java程序员必须知道的4个书写代码技巧

    如果现在要求对你写的Java代码进行优化,那你会怎么做呢?作者在本文介绍了可以提高系统性能以及代码可读性的四种方法,如果你对此感兴趣,就让我们一起来看看吧. 我们平时的编程任务不外乎就是将相同的技术套件应用到不同的项目中去,对于大多数情况来说,这些技术都是可以满足目标的.然而,有的项目可能需要用到一些特别的技术,因此工程师们得深入研究,去寻找那些最简单但最有效的方法.在以前一篇文章中,我们讨论了必要时可以使用的四种特殊技术,这些特殊技术可以创建更好的Java软件:而本文我们将介绍一些有助于解决常

  • Java程序员必须知道的5个JVM命令行标志

    本文是Neward & Associates的总裁Ted Neward为developerworks独家撰稿"你不知道5个--"系列中的一篇,JVM是多数开发人员视为理所当然的Java功能和性能背后的重负荷机器.然而,我们很少有人能理解JVM是如何进行工作的-像任务分配和垃圾收集.转动线程.打开和关闭文件.中断和/或JIT编译Java字节码,等等. 不熟悉JVM将不仅会影响应用程序性能,而且当JVM出问题时,尝试修复也会很困难. 本文将介绍一些命令行标志,您可以使用它们来诊断和

  • 为Java程序员准备的10分钟Perl教程

    1.从基础开始 不像java,Perl不需要"main"方法作为入口点.要运行一个简单的Perl程序如下: 复制代码 代码如下: # comment starts with "#" # the name is hello.pl print "Hello Perl!"; 只需执行: perl hello.pl 2. 日期类型 在Perl中的日期类型是非常简单,它有3种类型:标量,数组和Hash. 标是一个单值,它基本上可以是任何其他比数组或哈希.

  • 最有价值的50道java面试题 适用于准入职Java程序员

    下面的内容是对网上原有的Java面试题集及答案进行了全面修订之后给出的负责任的题目和答案,原来的题目中有很多重复题目和无价值的题目,还有不少的参考答案也是错误的,修改后的Java面试题集参照了JDK最新版本,去掉了EJB 2.x等无用内容,补充了数据结构和算法相关的题目.经典面试编程题.大型网站技术架构.操作系统.数据库.软件测试.设计模式.UML等内容,同时还对很多知识点进行了深入的剖析,例如hashCode方法的设计.垃圾收集的堆和代.Java新的并发编程.NIO.2等,相信对准备入职的Ja

  • Java程序员应该遵守的10条纪律

    有哪些"纪律"是Java程序员所要遵守的? 1. 为代码添加注释(Add comments to your code). – 每个人都知道这一点,但不是每个人都会这么做.你有多少次"忘记"添加注释了?确实,注释不会为你的程序增加任何函数功能.但是,有多少次,看到2周前写的代码,你都记不起它是干什么的?你很幸运,那些未注释的代码是你自己写的,你脑海中还会有残存的印象.非常不幸,大多时候,代码是别人写的,并且那个人很可能已经离开公司了.有句谚语说的好:"有来有

  • 小米Java程序员第二轮面试10个问题 你是否会被刷掉?

    近日,开发者头条上分享了一篇"小米java第二轮面经",有很多的java程序员表示非常有兴趣. 下面就和各位分享小米java第二轮面经: 0.谈谈对Spring的认识 1.java集合的继承关系 相关文章: java集合继承关系图分享 Java集合类的组织结构和继承.实现关系详解 Java集合继承体系详解 Java中集合关系图及常见操作详解 2.你知道CLOSE_WAIT这个状态吗? 3.谈谈你对jvm.java内存模型的认识? 4.Java里的红黑树是怎么实现的? 相关文章: jav

  • java程序员必须要学会的linux命令总结(推荐)

    1.查找文件 find / -name filename.txt 根据名称查找/目录下的filename.txt文件. find . -name "*.xml" 递归查找所有的xml文件 2.查看一个程序是否运行 ps –ef|grep tomcat 查看所有有关tomcat的进程 3.终止线程 kill -9 19979 终止线程号位19979的进程 pkill -9 java 批量终止java进程 4.查看文件,包含隐藏文件 ls -al 5.当前工作目录 pwd 6.复制文件 c

  • Java程序员容易犯的10大低级错误

    本文根据java开发人员在编码过程中容易忽视或经常出错的地方进行了整理,总结了十个比较常见的低级错误点,方便大家学习. 1.不能用"=="比较两个字符串内容相等. 2. 对list做foreach循环时,循环代码中不能修改list的结构. 3. 日志和实际情况不一致;捕获异常后没有在日志中记录异常栈. 4. 魔鬼数字. 5. 空指针异常. 6. 数组下标越界. 7. 将字符串转换为数字时没有捕获NumberFormatException异常. 8. 对文件.IO.数据库等资源进行操作后

  • 阿里资深技术专家:在各阶段中3年经验的java程序员应该具备哪些技术能力

    3年工作经验的Java程序员应该具备哪些技术能力,这可能是Java程序员们比较关心的内容.我这里要说明一下,以下列举的内容不是都要会的东西,但是你掌握得越多,最终能得到的评价.拿到的薪水势必也越高. 1.基本语法 这包括static.final.transient等关键字的作用,foreach循环的原理等等.今天面试我问你static关键字有哪些作 用,如果你答出static修饰变量.修饰方法我会认为你合格,答出静态块,我会认为你不错,答出静态内部类我会认为你很好,答出静态导包我会对你很满 意,

随机推荐