前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >专栏 >深入学习 Intellij IDEA 调试技巧

深入学习 Intellij IDEA 调试技巧

作者头像
andyxh
发布于 2019-09-05 09:44:09
发布于 2019-09-05 09:44:09
1.6K0
举报
文章被收录于专栏:程序通事程序通事

程序员的日常工作除了写代码之外,很大一部分时间将会在查找 BUG,解决问题。查找 BUG,离不开在 IDE 中调试代码。熟练的掌握调试技巧,可以帮助我们减少查找时间,快速定位问题。

在 IDEA 中调试代码很方便,只要开启调试,在相应代码处使用断点,然后进行相应调试即可。正是因为只要掌握这几个功能,就可以调试代码,所以在很长一段时间内,不了解其他调试技巧。后续深入使用 IDEA 过程中,不断学会 IDEA 其他调试技巧,很大程度上加快调试速度。

Step 系列按钮

日常调试的过程中为了为了找到程序的bug,通常需要单步调试,一步一步跟踪程序执行的流程,根据变量的值,找到最终原因。

IDEA 中提供一系列 Step 功能按钮用于单步调试,可以在 Run 菜单栏找到全部 Step 功能。

另外在调试窗口也可以找到,不过这里只会显示一部分常用按钮。

调试过程中,使用频率最高的可能就是 Setp OverSetp Over 可以单步调试代码,但是当碰到方法执行时,不会进入方法内,直接调用了方法,然后到下一行。

如果需要进入方法内,需要使用 Step IntoStep Into 可以进入调用的方法内,不过默认情情况下并不会进入 java.* 等类的方法中。如果需要进入,可以在 Setting-Stepping 中设置,排除即可。。

另外还可以使用 Force Step Into,强制进入。

当碰到一行代码调用多个方法时,使用 Step Into 就比较蛋疼了。Step Into 会按照调用顺序进入调用的方法,但是往往我们只想进入其中一个方法而已。

这种场景下我们可以使用 Smart Step Into ,选择指定方法进入。

有些情况下,在进入一个方法后,可以使用 Setp Out,快速执行方法,然后跳回到调用处。

另外在进入 for/while 循环里面的后,如果不在循环代码外面打断点出来,就需一步步随着循坏代码执行结束,特别麻烦。在这里就可以使用 Setp Out Of Code Block,快速跳出循环代码块。

断点使用技巧

临时断点

一般调试的时候,我们会在代码行使用断点,然后运行测试,等到程序遇到断点暂停时,查看相关变量内容。

在 IDEA 中,默认断点将会一直存在。有时候仅仅想需要暂停第一次,临时查看,这个时候我们可以使用临时断点。使用快捷键 Ctel + Alt + Shift +F8 可以快速创建临时断点或者按住 ALt,然后再创建断点。。

条件断点

有时候我们在循环处理数据的过程中,可能只关心某个条件的数据,这种情况下我们使用条件断点。

右击断点,弹出设置断点属性的窗口,我们就可以在 condition 处设置条件。IDEA 会在满足这个条件时候,才会暂停程序。

另外设置的条件断点样式也会比较特殊,

多线程断点

在调试多线程的项目时候,如果在多个线程代码处打上了断点,调试的时候你会发现,只能串行的调试。

上面多线程程序,两个线程启动之后,程序也许会在 thread1暂停,也许会在 thread2处暂停。只要任一个断线暂停之后,另一处断点线程就会被阻塞。这时只能调试完暂停处线程的断点,才能跳到第二处断点,调试起来非常不方便。

我们可以设置断点线程属性,改变这个特性。

我们可以在断点上使用鼠标右键弹出断点设置框,在 Suspend 选择 Thread 选项。重新启动上面的程序,然后在调试窗口 Frames 可以看到 thread1thread2两个线程。其中两个线程均可进入调试,此时程序调试位于 thread1 处。这时选择框选择thread2,就可以调试 thread2.

另外,断点的多线程属性可以设置默认属性,点击 Make Default 按钮,设置默认 Suspend属性。

回退调试程序

调试的时候,有时候会进错方法或者错过一个方法调用过程,这个时候往往只能重新开始从头开始执行调试一遍。从新开始调试,可能还需要设置相关参数,修改数据库状态等,非常麻烦。所以如果在调试过程中可以回退就可以不用重新开始。

IDEA 中可以使用 Drop FrameForce Return 回退调试程序。

Drop Frame

Drop Frame 字面意思为丢栈。JVM 中使用栈帧用于进行方法调用数据结构,每次方法调用,对应着一个栈帧在虚拟机中从入栈到出栈的过程。调用方法之后,该方法栈帧将会位于栈顶。

执行 Drop Frame,丢弃栈顶栈帧,于是程序将会回到调用方法处。

调试上面的程序,在上面断点处,使用 Drop Frame,就可以跳回方法调用处,即第三行。查看输出窗口,发现并没有任何输出。

Drop Frame 可以在调试窗口栏找到。

注意与 Step Out 区别,执行 Step Out,方法将会执行结束之后再返回到调用处。

Force Return

Force Return 强制返回,可以在程序执行到一半时强制返回结束程序。可以在 Frames 找到。

点击 Force Return,可以设置返回值。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2019-07-31 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
Intellij IDEA 2019 debug断点调试技巧与总结详解
在 “调试工具” 窗口中,您可以看到框架和线程的状态、变量和表的列表。当您选择一个框架时,您会看到与所选框架相对应的变量。
JavaEdge
2020/05/27
5.5K0
Intellij IDEA 2019 debug断点调试技巧与总结详解
Intellij IDEA调试功能使用总结
专注于Java领域,追求简洁,每天推送高质量技术文章,实用教程。
MonroeCode
2018/01/10
1.4K0
Intellij IDEA调试功能使用总结
在Intellij IDEA中使用Debug
原文链接:https://www.cnblogs.com/chiangchou/p/idea-debug.html
chenchenchen
2019/11/12
6720
高效开发:IntelliJ IDEA天天用,这些Debug技巧你都知道?
在软件开发的过程中,可以说调试是一项基本技能。调试的英文单词为 debug ,顾名思义,就是去除 bug 的意思。俗话说的好,编程就是制造 bug 的过程,所以 debug 的重要性毋庸置疑,如果能熟练掌握调试技能,也就可以很快的定位出代码中的 bug。要知道,看的懂代码不一定写的出代码,写的出代码不一定能调试好代码,为了能写出没有 bug 的代码,我们必须得掌握一些基本的调试技巧。
程序员小强
2020/04/14
2.6K0
关于debug你可能还不知道的技巧,建议所有人都看一下
debug主要用来追踪代码的运行流程,从而分析定位异常发生的位置,以及在运行过程中参数的变化。也可以用debug模式来跟踪代码的运行流程去学习三方框架的源码。
一条coding
2021/08/12
8450
关于debug你可能还不知道的技巧,建议所有人都看一下
IDEA 调试图文教程,让 bug 无处藏身!
Debug用来追踪代码的运行流程,通常在程序运行过程中出现异常,启用Debug模式可以分析定位异常发生的位置,以及在运行过程中参数的变化。通常我们也可以启用Debug模式来跟踪代码的运行流程去学习三方框架的源码。
良月柒
2019/05/14
4350
IDEA 调试图文教程,让 bug 无处藏身!
在IntelliJ IDEA中多线程并发代码的调试方法
通常来说,多线程的并发及条件断点的debug是很难完成的,或许本篇文章会给你提供一个友好的调试方法。让你在多线程开发过程中的调试更加的有的放矢。
字母哥博客
2020/09/23
3.2K0
在IntelliJ IDEA中多线程并发代码的调试方法
恕我直言,IDEA的Debug,你可能只用了10%
Debug用来追踪代码的运行流程,通常在程序运行过程中出现异常,启用Debug模式可以分析定位异常发生的位置,以及在运行过程中参数的变化。通常我们也可以启用Debug模式来跟踪代码的运行流程去学习三方框架的源码。
Bug开发工程师
2019/08/30
6K1
恕我直言,IDEA的Debug,你可能只用了10%
【方向盘】使用IDEA的60+个快捷键分享给你,权为了提效(运行/调试篇)
本系列上篇文章介绍了IDEA里关于视窗、选择方面的快捷键,熟练掌握可以快速找到、定位到自己想要的代码。
YourBatman
2022/09/02
6630
【方向盘】使用IDEA的60+个快捷键分享给你,权为了提效(运行/调试篇)
ideal的debug_idea debug怎么用
有时候我们可以这样粗鲁地认为 Debug 的使用就是等同于这几个快捷键的使用,所以上面的 必备 快捷键是我们必须牢记的,这些也是开发很常用的。
全栈程序员站长
2022/09/27
6010
万字长文带你掌握 IDEA 2024 的30个Debug调试绝技,让你开发与修复 Bug 的效率提升亿倍
万字长文带你掌握 IDEA 2024 的30个Debug调试绝技,让你开发与修复 Bug 的效率提升亿倍
猫头虎
2024/05/24
2.8K0
万字长文带你掌握 IDEA 2024 的30个Debug调试绝技,让你开发与修复 Bug 的效率提升亿倍
最好的IDEA debug长文?看完我佛了
最近写了几篇IntelliJ IDEA系列的文章,反响蛮好。我想了下,因为并非是分享什么破解方法、推荐插件、主题这种蛋炒饭式哗众取宠的文章,而是真实对工作有帮助,对提高工作效率很有用的内容。同学们对使用IDEA还是有不少痛点,或者姿势不够正确优雅,一直以来A哥坚持写些不随波逐流、有一定深度专栏文章,哪怕只是个工具IDEA而已。
YourBatman
2021/02/07
2.4K1
最好的IDEA debug长文?看完我佛了
最近写了几篇IntelliJ IDEA系列的文章,反响蛮好。我想了下,因为并非是分享什么破解方法、推荐插件、主题这种蛋炒饭式哗众取宠的文章,而是真实对工作有帮助,对提高工作效率很有用的内容。同学们对使用IDEA还是有不少痛点,或者姿势不够正确优雅,一直以来A哥坚持写些不随波逐流、有一定深度专栏文章,哪怕只是个工具IDEA而已。
YourBatman
2022/03/08
1.4K0
最好的IDEA debug长文?看完我佛了
这几个 IntelliJ IDEA 高级调试技巧,用了都说爽!
循环中经常用到这个技巧,比如:遍历1个大List的过程中,想让断点停在某个特定值。
芋道源码
2019/12/24
1.1K0
这几个 IntelliJ IDEA 高级调试技巧,用了都说爽!
IDEA的Debug技巧
(Alt + F10):如果你的光标在其它行或其它页面,点击这个按钮可跳转到当前代码执行的行
程序员的时光001
2021/05/11
7610
万字长文!超详细的IntelliJ IDEA 教程!
工欲善其事,必先利其器。在Java开发中挑选一款好的Ide环境能大大提升我们的开发效率,IntelliJ IDEA正是一个不二选择。本教程会介绍怎么对idea进行配置、使用idea进行debug和经常使用的快捷键,最后会推荐几个牛逼的idea插件,大大提升开发体验和效率。
dizhiguo
2022/09/30
3.7K0
万字长文!超详细的IntelliJ IDEA 教程!
推荐阅读
相关推荐
Intellij IDEA 2019 debug断点调试技巧与总结详解
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文