多人同时远程Debug冲突解决方案

简介: # 背景 先讲一个开发人员经常会遇见的现象~ A和B两个developer共同负责同一个项目P的开发,P在dev环境上只部署了一台机器。有一天,A需要远程调试P的接口1,于是他使用本地idea启动remote连接到了P,debug的不亦乐乎。而此时B正在调用这台机器的接口2,B突然发现刚才还好好的,突然就不能访问了(B一脸懵逼样)…… 听完了故事,下面我们进入主题~ 开发人员经常会

背景

先讲一个开发人员经常会遇见的现象~
A和B两个developer共同负责同一个项目P的开发,P在dev环境上只部署了一台机器。有一天,A需要远程调试P的接口1,于是他使用本地idea启动remote连接到了P,debug的不亦乐乎。而此时B正在调用这台机器的接口2,B突然发现刚才还好好的,突然就不能访问了(B一脸懵逼样)……

听完了故事,下面我们进入主题~

开发人员经常会使用到本地debug功能,有时候有场景需要远程debug日常环境的机器,在这种情况下可能会有多个人同时在使用这台机器,经常出现的现象是某一个人在远程debug这台机器,导致其他人一直在等待。而其他人也是一脸懵逼,不知道这台机器到底发生了什么……

本文的目的是站在debug操作者的角度,探讨如何最小化的避免自己远程debug时对其他人造成影响。

步骤

先看一张图:
image.png
这张图的内容有三部分,都是用来设置这个断点的生效范围的。下面我们分别探讨这三部分的配置项的作用。
PS:问:怎么打开这张图? 答:打完断点后,在红色的圈圈上面右键单击(mac:两跟手指点按)

Enabled

是否可用。标识该断点是否生效。优先级最高。

Suspend

该断点的生效范围。优先级次于Enabled。
分为两个级别:

All:对整个java应用生效。程序运行到这个断点时,其他的线程都会停止,直到这个断点放开。
Thread:仅对当前线程生效。程序运行到这个断点时,不影响其他的线程。

Condition

这里写java代码。可以编写断点生效的条件。例如下图:
image.png
图中,我写了 userId == 1,意思是:当入参userId等于1时,这个断点才会生效。
本文重点
这里到了本文的重点。还拿本文开头的这个例子。我们假设A调试时使用的用户userId为1,B访问是使用的userId为2,那么A如果按照如下设置debug,就不会影响到B的使用:
image.png

最佳实践

  1. Suspend 设置为 Thread (设置为默认 : Make Default)
  2. Condition 根据该断点上方的变量,编写只对自己生效的代码。

思考

本文从debug操作者的角度,探讨如何最小化的避免自己远程debug时对其他人造成的影响。这对debug操作者有一些要求。
每一个developer都有可能是故事中的A,希望A们在远程debug的同时,养成好习惯。减少冲突,从我做起~~

相关文章
|
缓存 Ubuntu 前端开发
Linux配置yum源以及基本yum指令
Linux配置yum源以及基本yum指令
|
负载均衡 Kubernetes 网络协议
Istio:xDS协议解析
Istio:xDS协议解析
Istio:xDS协议解析
|
7月前
|
存储 数据可视化 Java
AgentScope AutoContextMemory:告别Agent上下文焦虑
AgentScope推出AutoContextMemory,智能管理长对话上下文,通过6种渐进式压缩策略,在降低70% token成本的同时保障信息完整性,提升响应速度,解决大模型多轮对话中成本高、性能低、易超限等难题。
|
存储 Java 关系型数据库
java调用mysql存储过程
在 Java 中调用 MySQL 存储过程主要借助 JDBC(Java Database Connectivity)。其核心原理是通过 JDBC 与 MySQL 建立连接,调用存储过程并处理结果。具体步骤包括:加载 JDBC 驱动、建立数据库连接、创建 CallableStatement 对象、设置存储过程参数并执行调用。此过程实现了 Java 程序与 MySQL 数据库的高效交互。
|
数据可视化 关系型数据库 MySQL
【IDEA】配置mysql环境并创建mysql数据库
【IDEA】配置mysql环境并创建mysql数据库
3710 0
|
Java Android开发
IDEA设置项目编码格式【修改为GBK 或 UTF-8】
这篇文章介绍了在IntelliJ IDEA中如何设置项目编码格式,包括将项目编码修改为GBK或UTF-8的详细步骤和图解。
24826 12
IDEA设置项目编码格式【修改为GBK 或 UTF-8】
|
消息中间件 NoSQL Java
2024年高频Java面试题集锦(含答案),让你的面试之路畅通无阻!
或许这份面试题还不足以囊括所有 Java 问题,但有了它,我相信你一定不会“败”的很惨,因为有了它,足以应对目前市面上绝大部分的 Java 面试了,因为这篇文章不论是从深度还是广度上来讲,都已经囊括了非常多的知识点了。