IDEA的5大调试技巧,你会废吗?

Idea必学基础使用--项目创建、显示设置及常用操作--超详细教学 一、创建项目 (1)打开Idea 如果第一次打开,会出现一个界面,因为我不是第一次打开,就没有截图资源了。在这里说一下各行的含义: <1> Create New Project 创建新项目 <2> Import Project 导入其他项目 <3> Open 打开项目 <4> Check Out from Version Control 控制版本 (2)Create New Project 创建新项目 第一次打开之后,肯定没有什么项目可 阅读详情
来源微信公众号:JAVA日知录

在项目开发的时候我发现很多小伙伴能非常熟练的使用IDEA编写代码,但是对于IDEA调试的技巧掌握的不是很好,只会F7、F8、F9等这些基本调试功能。

而像一些复杂的调试场景就无从下手,如:在for循环中调试某个特定值;多线程、Reactor调试;修改变量的运行值等。

下面我们就来分场景介绍一下IDEA的调试技巧,看完掌握后调试bug的效率一定大大提升。

1. 条件断点

循环中经常用到这个技巧,比如:遍历1个大List的过程中,想让断点停在某个特定值。

条件断点

参考上图,在断点的位置,右击断点旁边的小红点,会出来一个界面,在Condition这里填入断点条件即可,这样调试时,就会自动停在i=10的位置。

条件断点调试

2. 回到"上一步"

该技巧最适合特别复杂的方法套方法的场景,好不容易跑起来,一不小心手一抖,断点过去了,想回过头看看刚才的变量值,如果不知道该技巧,只能再跑一遍。

参考上图,method1方法调用method2,当前断点的位置j=100,点击上图红色箭头位置的Drop Frame图标后,时间穿越了

退回上一步

回到了method1刚开始调用的时候,变量i变成了99,没毛病吧,老铁们,是不是很6 :)

注:好奇心是人类进步的阶梯,如果想知道为啥这个功能叫Drop Frame,而不是类似Back To Previous 之类的,可以去翻翻JVM的书,JVM内部以栈帧为单位保存线程的运行状态,drop frame即扔掉当前运行的栈帧,这样当前“指针”的位置,就自然到了上一帧的位置。

3.多线程调试

多线程同时运行时,谁先执行,谁后执行,完全是看CPU心情的,无法控制先后,运行时可能没什么问题,但是调试时就比较麻烦了,最明显的就是断点乱跳,一会儿停这个线程,一会儿停在另一个线程,比如下图:

如果想希望下一个断点位置是第2句诗句,可能要失望了:

如果想让线程在调试时,想按自己的愿意来,让它停在哪个线程就停在哪个线程,可以在图中3个断点的小红点上右击,

即:Suspend挂起的条件是按每个线程来,而非All。把这3个断点都这么设置后,再来一发试试

注意上图中的红框位置,断点停下来时,这个下拉框可以看到各个线程(注:给线程起个容易识别的名字是个好习惯!),我们可以选择线程“天空中的飞鸟”

断点如愿停在了第2句诗。

4.远程调试

这也是一个装B的利器,本机不用启动项目,只要有源代码,可以在本机直接远程调试服务器上的代码,打开姿势如下:

4.1 项目启动时,先允许远程调试
java -server -Xms512m -Xmx512m -Xdebug -Xnoagent -Djava.compiler=NONE -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=9081 -Djava.ext.dirs=. ${main_class}

起作用的就是

-Xdebug -Xnoagent -Djava.compiler=NONE -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=9081

注意:远程调试从技术上讲,就是在本机与远程建立scoket通讯,所以端口不要冲突,而且本机要允许访问远程端口,另外这一段参数,放要在-jar 或 ${main_class}的前面

4.2 idea中设置远程调试

然后就可以调试了

前提是本机有项目的源代码 ,在需要的地方打个断点,然后访问一个远程的url试试,断点就会停下来。

5. 临时执行表达式/修改变量的运行值

调试时,可以临时执行一些表达式,参考下图:点击这二个图标中的任何1个都可以

点击+号后,就可以在新出现的输入框里输入表达式,比如i+5

然后回车,马上就能看到结果

当然,如果调试时,想动态修改变量的值,也很容易,在变量上右击,然后选择Set Value,剩下的事,地球人都知道。

好了,今天的文章就到这里了,牢记这5大调试技巧可以让你快速定位问题,迅速解决bug,最后祝大家debug愉快!

实例化Spring bean的两种工厂方法 通过实例工厂方法和静态工厂方法实例化spring bean的例子。 立即下载

相关推荐

Zemax操作41--公差分析(一)

zemax公差

lzy750750的博客 5973

jetbrains idea调试java不显示静态变量解决

问题:idea调试java似乎不显示静态变。 解决:在设置里面选择调试java时显示静态变量。

路过人间,一叶知秋 3177

瑞芯微RV1126B芯片实战:如何用3Tops NPU打造智能安防摄像头(附配置指南)

本文详细介绍了基于瑞芯微RV1126B芯片构建高性能智能安防摄像头的实战经验。文章深入剖析了其3Tops NPU与独立AI-ISP的协同优势,提供了从硬件选型、开发环境搭建、AI模型部署到系统调优的全流程配置指南,帮助开发者充分发挥芯片潜力,实现高效、稳定的智能视觉应用。

weixin_29281915的博客 444

ET框架消息编写四重契约:序列化、语义、生命周期与网络传输

在C#游戏服务端开发中,消息机制是通信系统的核心基础。Protobuf作为主流二进制序列化协议,强调Schema先行、字段编号不可变、类型强约束等底层原理,其技术价值在于跨语言兼容性、体积压缩率与解析性能优势,广泛应用于MMO、实时对战及社交类后端架构。而ET框架在此基础上叠加了Actor模型语义、热更域隔离、TCP粘包处理等工程约束,使消息不再仅是数据载体,而是承载路由逻辑、线程安全、生命周期管理与网络可靠性的复合契约。本文聚焦ET中IActorMessage与IMessage的语义差异、热更域下消息注册

weixin_33913332的博客 224

ORB-SLAM3的Euroc数据集测试

(一)测试运行 不同模式测试过程(以MH_03为例) 1、pure mono 运行SLAM: cd ORB-SLAM3/Example #run slam ./Monocular/mono_euroc ../Vocabulary/ORBvoc.txt ./Monocular/EuRoC.yaml "$pathDatasetEuroc"/MH03 ./Monocular/EuRoC_TimeStamps/MH03.txt dataset-MH03_mono 利用ORB-SLAM3自带..

ljtx200888的博客 9146

RK3566 Android11固件烧录实战:从驱动配置到分区升级与救砖

在嵌入式开发与量产交付中,固件烧录是连接编译产物与硬件实体的关键环节,其本质并非简单的文件拷贝,而是依赖芯片BootROM与Loader协同完成的分区级数据搬运。以RK3566平台为例,理解Loader模式、MaskROM模式以及Android分区表的映射关系,是高效开展系统升级、单分区调试和异常恢复的基础。无论是研发阶段通过RKDevTool进行灵活的分区烧录,还是产线环境借助Linux命令行工具实现批量灌装,规范的驱动安装、工具链选型与硬件连接验证都直接决定成败。本文聚焦RK3566 Android11

weixin_29172963的博客 253

Java反射机制

Java反射机制 1、Java反射机制概述 1.1、Reflection API 1、反射(Reflection):是Java语言的一个特性,是被视为动态语言的关键。它允程序在运行时(注意不是编译的时候)来进行自我检查并且对内部的成员进行操作。例如它允许一个Java的类获取他所有的成员变量和方法并且显示出来。而这一特性的实现,需要借助于 Refection API。 2、反射机制允许程序在执行期借助于Reflection API取得任何类的内部信息,并能直接操作任意对象的内部属性及方法。 3、加载完类之后,

laizhenghua的博客 682

ads设计Doherty功放(1)

Doherty功放的设计

qq_40995480的博客 2万+

jmeter使用无界面运行后产生的jtl文件,打开后在请求信息里显示No data to display

打开bin/user.properties 加入如下参数: jmeter.save.saveservice.output_format=xml jmeter.save.saveservice.response_data=true jmeter.save.saveservice.samplerData=true jmeter.save.saveservice.requestHeaders=true ...

suancai1993的博客 7329

手把手教你用X-AnyLabeling实现医学图像标注:从SAM模型选择到多边形优化全流程

本文详细介绍了如何使用X-AnyLabeling平台结合Med-SAM等专业模型实现医学图像的高效标注。从环境配置、模型部署到实战工作流,涵盖智能辅助标注、低对比度解决方案及团队协作方案,帮助医疗从业者大幅提升标注效率与质量。特别适合处理CT/MRI等医学影像的复杂标注需求。

weixin_29251131的博客 457

开关电源EMI优化秘籍:三明治绕法如何让你的产品通过认证测试

本文深入解析了开关电源EMI优化中的三明治绕法,详细阐述了其通过改变绕组排布来减小初次级寄生电容、降低共模噪声的核心机理。文章提供了从绕制结构选择、绝缘安规处理到实测验证的全流程实战指南,帮助工程师有效利用这一工艺,提升产品通过CCC、CE等EMI认证测试的成功率。

tcp8optimizer的博客 706

IDEA的5大调试技巧,你会废吗?,ELK原来这么简单

对于面试还是要好好准备的,尤其是有些问题还是很容易挖坑的,例如你为什么离开现在的公司(你当然不应该抱怨现在的公司有哪些不好的地方,更多的应该表明自己想要寻找更好的发展机会,自己的一些现实因素,比如对于我而言是现在应聘的公司离自己的家更近,又或者是自己工作到达了迷茫期,想跳出迷茫期等等)Java面试精选题、架构实战文档你的支持,我的动力;祝各位前程似锦,offer不断!自己的家更近,又或者是自己工作到达了迷茫期,想跳出迷茫期等等)

ghfgjfg679的博客 958

基于STM32设计的便携式心电信号监测系统_474

本课题设计并实现了一种基于STM32单片机的便携式心电信号监测系统。系统以STM32F103C8T6为核心控制单元,结合PulseSensor心率传感器,实现对人体心率信号的采集与处理。通过单片机内部ADC模块对传感器输出的模拟电压信号进行采样,并对采集数据进行分析处理,从而计算得到实时心率值。

168

IDEA--IDEA debug断点调试技巧

目录 一、Debug开篇 二、基本用法&amp;快捷键 三、变量查看 四、计算表达式 五、智能步入 六、断点条件设置 七、多线程调试 八、回退断点 九、中断Debug Debug用来追踪代码的运行流程,通常在程序运行过程中出现异常,启用Debug模式可以分析定位异常发生的位置,以及在运行过程中参数的变化。通常我们也可以启用Debug模式来跟踪代码的运行流程去学习三方框架的源码。...

灵熙云工作室 21万+

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

IDEA的5大调试技巧

在项目开发的时候我发现很多小伙伴能非常熟练的使用IDEA编写代码,但是对于IDEA调试的技巧掌握的不是很好,只会F7、F8、F9等这些基本调试功能。而像一些复杂的调试场景就无从下手,如:在for条件断点条件断点调试退回上一步回到了method1刚开始调用的时候,变量i变成了99,没毛病吧,老铁们,是不是很6 :)

z_ssyy的博客 3443

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

IDEA调试技巧

IntelliJ IDEA使用教程 (总目录篇) 在调试代码的时候,你的项目得debug模式启动,也就是点那个绿色的甲虫启动服务器,然后,就可以在代码里面断点调试啦。 下面不要在意,这个快捷键具体是啥,因为,这个keymap是可以自己配置的,有的人keymap是mac版的,有的是Windows版的。我的就是Windows,而且修改keymap为eclipse的ke...

baidu_38634017的博客 2万+

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

IDEA的5大调试技巧,你学废了吗?

来源微信公众号:JAVA日知录 在项目开发的时候我发现很多小伙伴能非常熟练的使用IDEA编写代码,但是对于IDEA调试的技巧掌握的不是很好,只会F7、F8、F9等这些基本调试功能。而像一些...

qq_36189144的博客 319

IDEA的5大调试技巧,你会了,就是大神!

在项目开发的时候我发现很多小伙伴能非常熟练的使用IDEA编写代码,但是对于IDEA调试的技巧掌握的不是很好,只会F7、F8、F9等这些基本调试功能。 而像一些复杂的调试场景就无从下手,如:在for循环中调试某个特定值;多线程、Reactor调试;修改变量的运行值等。 下面我们就来分场景介绍一下IDEA的调试技巧,看完掌握后调试bug的效率一定大大提升。 1. 条件断点 循环中经常用到这个技巧,比如:遍历1个大List的过程中,想让断点停在某个特定值。 条件断点 参考上图,在断点的位置,右击断

weixin_43759889的博客 414
上一篇: 面试官:为什么 SpringBoot 的 jar 可以直接运行?
下一篇: 知乎:国家何时整治程序员的高效现象?
Java思维导图
博客等级 码龄10年 306粉丝 71原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值