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

 更新时间:2022年08月05日 14:27:15   作者:奔跑的毛球  
这篇文章主要为大家介绍了java程序员必会的远程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的资料请关注脚本之家其它相关文章!

相关文章

  • Spring Boot 3 集成 RabbitMQ 实践指南(原理解析)

    Spring Boot 3 集成 RabbitMQ 实践指南(原理解析

    本文介绍了SpringBoot 3集成RabbitMQ的实践指南,涵盖了RabbitMQ的核心原理、核心概念、高级特性、应用场景、环境搭建、核心配置类、消息生产者、消息消费者、接口控制器、监控与运维、最佳实践以及常见问题与解决方案等内容,感兴趣的朋友一起看看吧
    2025-02-02
  • Java中HashSet、LinkedHashSet和TreeSet区别详解

    Java中HashSet、LinkedHashSet和TreeSet区别详解

    这篇文章主要介绍了Java中HashSet、LinkedHashSet和TreeSet区别详解,如果你需要一个访问快速的Set,你应该使用HashSet,当你需要一个排序的Set,你应该使用TreeSet,当你需要记录下插入时的顺序时,你应该使用LinedHashSet,需要的朋友可以参考下
    2023-09-09
  • java返回前端实体类json数据时忽略某个属性方法

    java返回前端实体类json数据时忽略某个属性方法

    这篇文章主要给大家介绍了关于java返回前端实体类json数据时忽略某个属性的相关资料,文中通过示例代码介绍的非常详细,需要的朋友可以参考下
    2023-08-08
  • Spring MVC异步上传、跨服务器上传和文件下载功能实现

    Spring MVC异步上传、跨服务器上传和文件下载功能实现

    这篇文章主要介绍了Spring MVC异步上传、跨服务器上传和文件下载功能实现,本文通过示例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2023-07-07
  • Mybatis接口式编程的原理

    Mybatis接口式编程的原理

    mybatis有两种实现方式,一种可以通过xml配置文件实现,其二是面向接口编程的实现。本文重点给大家介绍mybatis接口编程的原理,需要的的朋友参考下
    2017-03-03
  • Java缓存池代码实例详解

    Java缓存池代码实例详解

    本篇文章主要介绍了Java实现简单的缓存方法实例,需要的朋友可以参考下
    2017-04-04
  • Java通过切面实现统一处理Token设置用户信息

    Java通过切面实现统一处理Token设置用户信息

    这篇文章主要介绍了Java切面统一处理Token设置用户信息,常见的后端开发中,接口请求中一般前端都是先通过用户登录获取token,每次接口请求都需要在头信息中携带token信息,后端每次都需要手动处理token信息,从token信息中解析获取用户信息,需要的朋友可以参考下
    2023-10-10
  • MyBatis-Plus 实体类注解的实现示例

    MyBatis-Plus 实体类注解的实现示例

    MyBatis-Plus作为MyBatis的增强版,提供了一系列实用的注解,如@TableName、@TableId、@TableField等,旨在简化数据库和Java实体类之间的映射及CRUD操作,通过这些注解,开发者可以轻松实现表映射、字段映射、逻辑删除、自动填充和乐观锁等功能
    2024-09-09
  • springboot整合ACTable生成数据库表方式

    springboot整合ACTable生成数据库表方式

    ACTable是一个增强Mybatis的功能框架,支持SpringBoot和SpringMvc项目,通过配置model注解即可创建、修改表结构,并实现了共通的CRUD功能
    2025-02-02
  • Java语言Iterator转换成 List的方法

    Java语言Iterator转换成 List的方法

    在 Java 中,迭代器(Iterator)是一种用于遍历集合中元素的对象,它提供了一种简单而一致的方式来访问集合中的元素,而不需要暴露集合内部的结构,这篇文章主要介绍了Java语言Iterator转换成 List的方法,需要的朋友可以参考下
    2023-08-08

最新评论