【idea】调试篇 idea调试技巧合集
前言:之前博主写过一篇idea技巧合集的文章,由于技巧过于多了,文章很庞大,所以特地将调试相关的技巧单独成章, 调试和我们日常开发是息息相关的,用好调试可以事半功倍
文章目录
- 1. idea调试异步线程
- 2. idea调试stream流
- 3. 根据条件进入断点
- 4. 调试当前代码行
- 5. 修改变量值调试
- 6. 监控断点
1. idea调试异步线程
默认idea是调试主线程的,如果开启了异步线程 打断点不会进入,这在我们调试源码时不方便(例如redisson的源码会有大量异步线程的操作)
我们只需要在断点右键 在Supend选择Thread
(要注意的是 选择Thread的断点需要全面 例如A线程之后的代码开启了异步线程B,异步线程B下面有异步线程C的代码 断点需要在A/B/C线程都选上Thread 否则仍然不会进入C)
2. idea调试stream流
idea2024是非常方便调试的,不用额外操作;
在早些版本中:点击Trace Current Stream Chain 查看流的每步操作
3. 根据条件进入断点
断点右键写上Condition条件表达式即可,这在循环调试中非常方便,举个栗子:
直接跳过了前面无关数据
4. 调试当前代码行
我们用例子来解释是什么意思:
如下图 我们模拟了两个断点
一般情况下 我们会选择打多个断点 一步步调试,执行完第一个断点后,我们通常点击 跳到下一个断点
经常调试源码的同学应该深有体会,断点打一堆后会多不方便;拿jdk源码来说,在某个方法打上一个断点,有N多其它线程可能执行到断点。
那我们有没有什么方式 不打断点也能调试呢? 有的,有的,确实有的:
鼠标光标放在要调试的那行代码,按 ctrl + alt + F9
(博主idea用的是eclipse的那套快捷键,如果不是用的这套快捷键 不生效的话 试试 alt + F9 )
如上图,不打断点 仍然可以调试
5. 修改变量值调试
我们还是拿一个循环来举例:
我们不想关心 i<9 的逻辑时,可以在调试时 右键选择 evaluate expression
在expression时直接修改变量
6. 监控断点
监控断点是打在全局变量上面的断点,每当变量值发生变化的时候 都会有提示:
如图,我们只在定义变量时手动打上断点:
随着我们执行代码,在变量发生修改时 会自动提示:
public class DebugTest {static String name = "";public static void main(String[] args) {name = "csdn:孟秋与你";DebugInnerTest debugInnerTest = new DebugInnerTest();name = debugInnerTest.modifyName(name);System.out.println(name);}
}class DebugInnerTest {public String modifyName(String name) {return "修改名";}
}
因为局部变量的生命周期仅在其作用域内有效(如函数、循环等),IDEA 无法直接在局部变量上设置独立的数据断点(监视值变化);在实际开发时,如果遇到某个方法内部的局部变量值很难调试 想监听时,那把它先定义成全局变量即可 调试完再改回去。
相关文章:

【idea】调试篇 idea调试技巧合集
前言:之前博主写过一篇idea技巧合集的文章,由于技巧过于多了,文章很庞大,所以特地将调试相关的技巧单独成章, 调试和我们日常开发是息息相关的,用好调试可以事半功倍 文章目录 1. idea调试异步线程2. idea调试stream流…...

二叉树深搜:在算法森林中寻找路径
专栏:算法的魔法世界 个人主页:手握风云 目录 一、搜索算法 二、回溯算法 三、例题讲解 3.1. 计算布尔二叉树的值 3.2. 求根节点到叶节点数字之和 3.3. 二叉树剪枝 3.4. 验证二叉搜索树 3.5. 二叉搜索树中第 K 小的元素 3.6. 二叉树的所有路径 …...
golang 安装gin包、创建路由基本总结
文章目录 一、安装gin包和热加载包二、路由简单场景总结 一、安装gin包和热加载包 首先终端新建一个main.go然后go mod init ‘项目名称’执行以下命令 安装gin包 go get -u github.com/gin-gonic/gin终端安装热加载包 go get github.com/pilu/fresh终端输入fresh 运行 &…...

BMVC2023 | 多样化高层特征以提升对抗迁移性
Diversifying the High-level Features for better Adversarial Transferability 摘要-Abstract引言-Introduction相关工作-Related Work方法-Methodology实验-Experiments结论-Conclusion 论文链接 GitHub链接 本文 “Diversifying the High-level Features for better Adve…...

有哪些GIF图片转换的开源工具
以下是关于GIF图片转换的开源工具的详细总结,涵盖功能特点、适用场景及用户评价: 1. FFmpeg 功能特点: 作为开源命令行工具,FFmpeg支持视频转GIF、调整帧率、分辨率、截取片段等操作,可通过脚本批量处理。适用场景: 适合开发者或技术用户进行高效批处理,常用于服务器端自…...

C++—特殊类设计设计模式
目录 C—特殊类设计&设计模式1.设计模式2.特殊类设计2.1设计一个无法被拷贝的类2.2设计一个只能在堆上创建对象的类2.3设计一个只能在栈上创建对象的类2.4设计一个类,无法被继承2.5设计一个类。这个类只能创建一个对象【单例模式】2.5.1懒汉模式实现2.5.2饿汉模…...

Android 手写签名功能详解:从原理到实践
Android 手写签名功能详解 1. 引言2. 手写签名核心实现:SignatureView 类3. 交互层实现:MainActivity 类4. 布局与配置5. 性能优化与扩展方向 1. 引言 在电子政务、金融服务等移动应用场景中,手写签名功能已成为提升用户体验与业务合规性的关…...

Level2.8蛇与海龟(游戏)
#小龟快跑游戏 输入难度(1-5),蛇追到龟,游戏结束 #分析问题:从局部>整体 #游戏画面:创建画笔(海龟蛇)>1.海龟移动(键盘控制)>2.蛇(自动追踪,海龟位置)>3.海龟(限定范围,防止跑出画布之外)>4.游戏&…...

【Android构建系统】如何在Camera Hal的Android.bp中选择性引用某个模块
背景描述 本篇文章是一个Android.bp中选择性引用某个模块的实例。 如果是Android.mk编译时期,在编译阶段通过某个条件判断是不是引用某个模块A, 是比较好实现的。Android15使用Android.bp构建后,要想在Android.bp中通过自定义的一个变量或者条件实现选…...

【Canvas与诗词】醉里挑灯看剑 梦回吹角连营
【成图】 【代码】 <!DOCTYPE html> <html lang"utf-8"> <meta http-equiv"Content-Type" content"text/html; charsetutf-8"/> <head><title>醉里挑灯看剑梦回吹角连营 Draft1</title><style type"…...
Hue面试内容整理-Hue 架构与前后端通信
Cloudera Hue 是一个基于 Web 的 SQL 助手,旨在为数据分析师和工程师提供统一的界面,以便与 Hadoop 生态系统中的各个组件(如 Hive、Impala、HDFS 等)进行交互。其架构设计强调前后端的分离与高效通信,确保系统的可扩展性和可维护性。以下是 Hue 架构及其前后端通信机制的…...
Linux搜索
假如我们要搜索 struct sockaddr_in 我们在命令终端输入 cd/usr/include/ //进入头文件目录地址 /usr/include/ grep " struct sockaddr_in { " *-nir (*是在当前目录,n 是找出来显示行数…...
Git基础原理和使用
Git 初识 一、版本管理痛点 在日常工作和学习中,我们经常遇到以下问题: - 通过不断复制文件来保存历史版本(如报告-v1、报告-最终版等) - 版本数量增多后无法清晰记住每个版本的修改内容 - 项目代码管理存在同样问题 二、版本控…...

实现视频分片上传 OSS
访问 OSS 有两种方式,本文用到的是使用临时访问凭证上传到 OSS,不同语言版本的代码参考: 使用STS临时访问凭证访问OSS_对象存储(OSS)-阿里云帮助中心 1.安装并使用 首先我们要安装 OSS: npm install ali-oss --save 接着我们…...

网络I/O学习(一)
一、什么是网络IO? 就是客户端和服务端之间的进行通信的通道(fd)。 二、网络IO通信步骤 1、建立套接字 int socketfd socket(AF_INET, SOCK_STREAM, 0);struct sockaddr_in servaddr; servaddr.sin_family AF_INET; servaddr.sin_addr.s_addr htonl(INADDR_A…...
4:OpenCV—保存图像
将图像和视频保存到文件 在许多现实世界的计算机视觉应用中,需要保留图像和视频以供将来参考。最常见的持久化方法是将图像或视频保存到文件中。因此,本教程准备解释如何使用 OpenCV C将图像和视频保存到文件中。 将图像保存到文件 可以学习如何保存从…...

Selenium-Java版(css表达式)
css表达式 前言 根据 tag名、id、class 选择元素 tag名 #id .class 选择子元素和后代元素 定义 语法 根据属性选择 验证CSS Selector 组选择 按次序选择子节点 父元素的第n个子节点 父元素的倒数第n个子节点 父元素的第几个某类型的子节点 父元素的…...

产品更新丨谷云科技 iPaaS 集成平台 V7.5 版本发布
五月,谷云科技 iPaaS 集成平台保持月度更新, V7.5 版本于近日正式发布。我们一起来看看新版本有哪些升级和优化。 核心新增功能:深化API治理,释放连接价值 API网关:全链路可控,精准管控业务状态 业务状态…...

深度学习让鱼与熊掌兼得
通常,一个大的复杂的模型的loss会低,但是拟合方面不够,小的模型在拟合方面更好,但是loss高,我们可以通过深度学习来得到一个有着低loss的小模型 我们之前学过,peacewise linear可以用常数加上一堆这个阶梯型函数得到,然后因为peacewise linear可以逼近任何function,所以理论上…...

TDuckX 2.6 正式发布|API 能力开放,核心表单逻辑重构,多项实用功能上线。
大家好,TDuckX 2.6 已正式发布。 本次更新以可集成性提升、数据处理能力增强和交互体验优化为核心,新增了包括 新增OpenAPI 模块、表单数据批量修改、字段导出分列 等多个面向开发者和实际业务落地场景的功能。 我们也重构了部分底层逻辑模块ÿ…...
LeetCode Hot100刷题——除自身以外数组的乘积
238. 除自身以外数组的乘积 给你一个整数数组 nums,返回 数组 answer ,其中 answer[i] 等于 nums 中除 nums[i] 之外其余各元素的乘积 。 题目数据 保证 数组 nums之中任意元素的全部前缀元素和后缀的乘积都在 32 位 整数范围内。 请 不要使用除法&a…...

JAVA EE(进阶)_进阶的开端
别放弃浸透泪水的昨天,晨光已为明天掀开新篇 ——陳長生. ❀主页:陳長生.-CSDN博客❀ 📕上一篇:JAVA EE_HTTP-CSDN博客 1.什么是Java EE Java EE(Java Pla…...
PDF批量合并拆分+加水印转换 编辑 加密 OCR 识别
各位办公小能手们!你们有没有遇到过被PDF文件折腾得晕头转向的时候呀?其实啊,有专门处理、编辑、管理和优化PDF文件的软件,那就是PDF工具。它功能老多了,有文档格式转换、内容编辑、页面管理、安全保护这些核心功能。下…...
Go语言交替打印问题及多种实现方法
Go语言交替打印问题及多种实现方法 在并发编程中,多个线程(或 goroutine)交替执行任务是一个经典问题。本文将以 Go 语言为例,介绍如何实现多个 goroutine 交替打印数字的功能,并展示几种不同的实现方法。 Go 语言相关…...

ArcGIS Pro调用多期历史影像
一、访问World Imagery Wayback,基本在我国范围 如下图: 二、 放大到您感兴趣的区域 三、 查看影像版本信息 点击第二步的按钮后,便可跳转至World Imagery (Wayback 2025-04-24)的相关信息。 四 、点击上图影像版本信息,页面跳转…...
10.11 LangGraph多角色Agent开发实战:生产级AI系统架构与性能优化全解析
LangGraph 项目:High-level API for Multi-actor Agents 关键词:LangGraph 多角色 Agent, 状态管理, 持久化机制, 工作流编排, 生产级 AI 系统 1. LangGraph 设计哲学与架构演进 LangGraph 是 LangChain 生态中首个面向 多角色协作 Agent 的高阶 API 框架,其核心设计思想可…...

组态王|组态王中如何添加西门子1200设备
哈喽,你好啊,我是雷工! 最近使用组态王采集设备数据,设备的控制器为西门子的1214CPU, 这里边实施边记录,以下为在组态王中添加西门子1200PLC的笔记。 1、新建 在组态王工程浏览器中选择【设备】→点击【新建】。 2、选择设备 和设备建立通讯要通过对应的设备驱动。 在…...
发布时将多个bpl 打包成一个bpl的方法,或者说:不需要vcl60.bpl情况下 18.5K的exe 照常可以运行。
其实这种方式 就是把项目的逻辑和业务 和 依赖分开。 控件和IDE 相对来说一段时间内不会改变。 更新只是更新一些项目的逻辑,例如你在代码里多写了一个 if ,这样就可以只更新这个极小的exe。 题:关于bpl发布时将vcl60.bpl,vcld…...

6.2.2邻接表法-图的存储
知识总览: 为什么要用邻接表 因为邻接矩阵的空间复杂度高(O(n)),且不适合边少的稀疏图,所以有了邻接表 用代码表示顶点、图 声明顶点图信息 声明顶点用一维数组存储各个顶点的信息,一维数组字段包括2个,每个顶点的…...

C++23 放宽范围适配器以允许仅移动类型(P2494R2)
文章目录 引言背景与动机提案内容与实现细节提案 P2494R2实现细节编译器支持 对开发者的影响提高灵活性简化代码向后兼容性 示例代码总结 引言 C23 标准中引入了许多重要的改进,其中一项值得关注的特性是放宽范围适配器(range adaptors)以允…...