如何对线上项目Debug

说明:本文介绍如何使用IDEA中的 Remote JVM Debug 功能对线上运行的项目Debug。

创建项目

创建一个测试项目,只有一个接口,该接口有一个BUG,如下:

(controller接口)

import com.hezy.service.HelloService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
public class HelloController {

    @Autowired
    private HelloService helloService;

    @GetMapping("/hello")
    public String hello() {
        return helloService.printInfo();
    }
}

(service实现类,手动制造了一个BUG)

import com.hezy.service.HelloService;
import org.springframework.stereotype.Service;

@Service
public class HelloServiceImpl implements HelloService {

    @Override
    public String printInfo() {
        return print();
    }

    /**
     * 定义一个输出信息的方法
     */
    public String print() {
        // 打印100个数字
        for (int i = 0; i < 100; i++) {
            System.out.println(i);
        }

        // 手动制造一个异常
        int i = 1 / 0;

        return "Hello World!";
    }
}

假设这个BUG我们没发现(嘿嘿),代码被我们推到测试环境跑,然后无意间调用该接口报错;

在这里插入图片描述

又假设这个BUG在本地无法复现,只有在线上环境才会出现,这时我们看着一堆日志无法排查;

在这里插入图片描述

在这里插入图片描述

远程Debug

进入正题,针对上面的情况,我们可以考虑使用IDEA的远程Debug功能,如下:

(1)新增远程Debug应用

进入Configuration窗口

在这里插入图片描述

新增一个启动项,选择Remote JVM Debug,即远程Debug

在这里插入图片描述

设置相关信息,端口号使用默认的5005即可,如有需要,可手动修改。另外注意一下JDK版本;

在这里插入图片描述

(2)线上项目Debug启动

另外,线上的项目需要Debug启动,如果是脚本或者命令行的方式启动的,可在对应的jar前面加上下面这行配置:

-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=*:5005

注意上面这行配置是在前面的配置窗口里中拷贝过来的,不要手敲:

在这里插入图片描述

(3)Debug启动

启动服务器上面的项目,可以看到首行有监听5005端口的信息:

在这里插入图片描述

在项目中启动远程Debug程序,没有报错,另外可以看到打的断点都卡住了。

在这里插入图片描述

这时,再调用一下线上项目的接口,断点进入到本地IDEA中了:

在这里插入图片描述

非常Nice,这时就可以排查问题了。

在这里插入图片描述

总结

本文介绍了如何使用IDEA中的Remote JVM Debug功能对线上的项目进行Debug,排查BUG。本文案例在个人的云服务器上演示,大家操作,需要注意开放相关端口(8080、5005)。

  • 8
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
要在IDEA中进行线上代码的debug,可以按照以下步骤进行操作: 1. 确保本地IDEA环境和线上服务器的监听端口互通。这样才能成功连接到远程服务器。\[2\] 2. 在本地启动IDEA,并确保成功连接到远程服务器。可以通过查看IDEA界面上的提示信息来确认连接是否成功。\[2\] 3. 在IDEA中设置断点,可以在需要调试的代码行上点击鼠标左键,或者使用快捷键Ctrl + Shift + F8来设置断点。 4. 发送请求到线上服务,使其进入debug模式。可以通过浏览器或者其他工具发送请求,确保线上服务进入了debug模式。\[2\] 5. 在IDEA中进行debug调试。当线上服务接收到请求并进入debug模式后,可以在IDEA中使用调试工具来逐步执行代码,观察变量的值和程序的执行流程,以便定位和解决问题。\[3\] 需要注意的是,debug模式会影响线上请求的性能,因此在调试完毕后,最好将项目重新启动,以确保项目正常运行而没有debug的影响。\[2\] 另外,除了使用IDEA进行远程调试,还有一些其他非常好用的远程调试工具,如阿里开源的Arthas(阿尔萨斯)。这些工具可以帮助开发人员更方便地调试在线上环境中出现的特殊问题。\[3\] #### 引用[.reference_title] - *1* *3* [IDEA远程线Debug(详细步骤图解)](https://blog.csdn.net/qq_44901285/article/details/119155617)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* [使用IDEA远程Debug线上服务](https://blog.csdn.net/lv_dw962464/article/details/115320137)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

何中应

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值