全栈小白的gravatar头像
全栈小白 2023-03-15 14:46:11
手把手教你java项目如何远程调试

原创声明:本人所发内容及涉及源码,均为亲手所撸,如总结内容有误,欢迎指出

唠嗑部分

很多java开发的小伙伴不知道java项目如何远程调试,每次出现环境问题都会十分纠结,只能在源代码中通过一行一行的日志去排查,即没有技术含量也浪费时间

今天来说一说,java项目如何远程debug

Java XDebug(远程debug模式)参数详解

  • -Xdebug:通知JVM工作在debug模式下;

  • -Xnoagent 禁用默认sun.tools.debug调试器。

  • -Djava.compiler=NONE 禁止 JIT 编译器的加载。

  • -Xrunjdwp:通知JVM使用(java debug wire protocol)来运行调试环境;加载JDWP的JPDA参考执行实例

  • transport:监听Socket端口连接方式(也可以dt_shmem共享内存方式,但限于windows机器,并且服务提供端和调试端只能位于同一台机);

  • server:server=y表示当前是调试服务端,=n表示当前是调试客户端

  • suspend:suspend=n表示启动时不中断,一般用于设置主动连接;suspend=y表示启动时就进入调试模式,一般用于被动连接

  • address=port表示远程debug所开放的端口号

言归正传

首先编写案例代码

/**
 * @Project: spring-boot-remote-debug-demo
 * @Author: cxs2014501@163.com
 * @Create: 2023/2/13 13:40
 * @Description:
 **/
@RestController
@RequestMapping("/debug")
public class DebugController {
​
    private static final String ACCOUNT = "admin";
    private static final String PWD = "admin1234";
​
    @PostMapping("/login")
    public Map<String, Object> login(@RequestBody LoginDTO dto){
        Map<String, Object> map = new HashMap<>();
        if (ACCOUNT.equals(dto.getUsername()) && PWD.equals(dto.getPassword())) {
            LoginVO vo = new LoginVO();
            BeanUtils.copyProperties(dto, vo);
            vo.setLoginTime(LocalDateTime.now());
            map.put("data", vo);
            map.put("msg", "登陆成功");
        } else {
            map.put("msg", "登陆失败,用户名或密码错误");
        }
        return map;
    }
}

启动

java -Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=8888 -jar app.jar --server.port=2023 &

手把手教你java项目如何远程调试

(自己虚拟机调试要关闭防火墙)

手把手教你java项目如何远程调试

idea配置调试

位置:运行 > 编辑配置

手把手教你java项目如何远程调试手把手教你java项目如何远程调试

开始调试

手把手教你java项目如何远程调试

使用postman或curl请求:/debug/login

手把手教你java项目如何远程调试手把手教你java项目如何远程调试你学会了吗

 


打赏

已有1人打赏

最代码官方的gravatar头像
最近浏览
暂无贡献等级
莫灬嚣张  LV6 3月20日
笨小孩一号  LV22 1月16日
3334004690  LV3 2023年10月31日
80730176  LV7 2023年10月10日
youwuzuichen  LV10 2023年9月14日
kingwen 2023年7月27日
暂无贡献等级
wuwutu  LV7 2023年7月18日
胡修洋 2023年6月5日
暂无贡献等级
MrQian  LV1 2023年4月8日
顶部 客服 微信二维码 底部
>扫描二维码关注最代码为好友扫描二维码关注最代码为好友