全栈小白
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 &
(自己虚拟机调试要关闭防火墙)
idea配置调试
位置:运行 > 编辑配置
开始调试
使用postman或curl请求:/debug/login
评论

roshan LV3
2024年12月6日
dapeng0011 LV15
2024年6月6日
微信网友_6922254776225792
2024年3月26日
暂无贡献等级
莫灬嚣张 LV6
2024年3月20日
笨小孩一号 LV22
2024年1月16日
3334004690 LV10
2023年10月31日
80730176 LV7
2023年10月10日
youwuzuichen LV11
2023年9月14日
kingwen
2023年7月27日
暂无贡献等级
wuwutu LV7
2023年7月18日