深入学习 Intellij IDEA 调试技巧
程序员的日常工作除了写代码之外,很大一部分时间将会在查找 BUG,解决问题。查找 BUG,离不开在 IDE 中调试代码。熟练的掌握调试技巧,可以帮助我们减少查找时间,快速定位问题。
在 IDEA 中调试代码很方便,只要开启调试,在相应代码处使用断点,然后进行相应调试即可。正是因为只要掌握这几个功能,就可以调试代码,所以在很长一段时间内,不了解其他调试技巧。后续深入使用 IDEA 过程中,不断学会 IDEA 其他调试技巧,很大程度上加快调试速度。
Step 系列按钮
日常调试的过程中为了为了找到程序的bug,通常需要单步调试,一步一步跟踪程序执行的流程,根据变量的值,找到最终原因。
IDEA 中提供一系列 Step 功能按钮用于单步调试,可以在 Run 菜单栏找到全部 Step 功能。

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

调试过程中,使用频率最高的可能就是 Setp Over。Setp Over 可以单步调试代码,但是当碰到方法执行时,不会进入方法内,直接调用了方法,然后到下一行。
如果需要进入方法内,需要使用 Step Into 。Step 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 可以看到 thread1,thread2两个线程。其中两个线程均可进入调试,此时程序调试位于 thread1 处。这时选择框选择thread2,就可以调试 thread2.

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

回退调试程序
调试的时候,有时候会进错方法或者错过一个方法调用过程,这个时候往往只能重新开始从头开始执行调试一遍。从新开始调试,可能还需要设置相关参数,修改数据库状态等,非常麻烦。所以如果在调试过程中可以回退就可以不用重新开始。
IDEA 中可以使用 Drop Frame 与 Force Return 回退调试程序。
Drop Frame
Drop Frame 字面意思为丢栈。JVM 中使用栈帧用于进行方法调用数据结构,每次方法调用,对应着一个栈帧在虚拟机中从入栈到出栈的过程。调用方法之后,该方法栈帧将会位于栈顶。
执行 Drop Frame,丢弃栈顶栈帧,于是程序将会回到调用方法处。

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

注意与 Step Out 区别,执行 Step Out,方法将会执行结束之后再返回到调用处。
Force Return
Force Return 强制返回,可以在程序执行到一半时强制返回结束程序。可以在 Frames 找到。


点击 Force Return,可以设置返回值。
深入学习 Intellij IDEA 调试技巧的更多相关文章
- IntelliJ IDEA 调试技巧
程序员的工作内容,有不少的时间是用在调试代码上.可以说不是在调试代码,就是即将调试代码. 掌握调试代码的一些技巧,在使用IDE提供的debugger时会快速定位问题的方式. 1.多线程调试 在多线程应 ...
- java与.net比较学习系列(1) 开发环境和常用调试技巧
最近因为公司项目要由.net平台转到java平台的原因,之前一直用.net的我不得不开始学习java了,刚开始听到说要转java的时候很抗拒,因为我想专注在.net平台上,不过这样也并不完全是坏事,通 ...
- 《软件调试的艺术》学习笔记——GDB使用技巧摘要
<软件调试的艺术>学习笔记——GDB使用技巧摘要 <软件调试的艺术>,因为名是The Art of Debugging with GDB, DDD, and Eclipse. ...
- (转)Intellij IDEA 2017 debug断点调试技巧与总结详解篇
背景:详细介绍idea的debug调试过程 Intellij IDEA 2017 debug断点调试技巧与总结详解篇
- java系列:《java核心技术 卷1》学习笔记,chapter 11 调试技巧
11. 6 调试技巧 1)一个不太为人所知却非常有效的技巧是在每个类中放一个main方法,这样就可以对每个类进行单元测试.这个方法可以保留,因为在java虚拟机只调用启动类的main方法. 2) ...
- VS调试技巧,提高调试效率(转):
如果你还没有使用过这些技巧,希望这篇博文能帮你发现它们. 它们学起来很容易,能帮你节省很多时间. 运行到光标(Ctrl+ F10) 我经常看见人们是这样来调试应用程序的: 他们在应用程序需要调试的代码 ...
- iOS各种调试技巧豪华套餐
转载自http://www.cnblogs.com/daiweilai/p/4421340.html 目录 前言 逼优鸡 知己知彼 百战不殆 抽刀断Bug 普通操作 全局断点(Global Break ...
- Visual Studio的调试技巧
Visual Studio的调试技巧 [原文地址] Debugging Tips with Visual Studio 2010 [原文发表日期] 2010/8/19 10:48 AM 这是我写的关于 ...
- xcode的调试技巧
转自:http://www.cnblogs.com/daiweilai/p/4421340.html#biyouji 目录 前言逼优鸡知己知彼 百战不殆抽刀断Bug 普通操作 全局断点(Global ...
随机推荐
- memcached--add使用
memcached是一种管理内存的软件,来动态的分配机器的内存,将需要存储的数据以key-value(键值对)的形式存储在内存中. 1.memcached使用的存储算法是hash算法在内存中存储字符串 ...
- Mac上PyCharm运行多进程报错的解决方案
Mac上PyCharm运行多进程报错的解决方案 运行时报错 may have been in progress in another thread when fork() was called. We ...
- SQL高度优化
受同事dd之托,优化一条boss看的报表SQL.dd写复杂疑难SQL无数,如何写出优雅的SQL自有一番心得体会.能将一条7表含inner join,left join并含有关联子查询的.返回结果集 ...
- C语言中const的用法总结
const是一个C语言的关键字,它限定一个变量不允许被改变.使用const在一定程度上可以提高程序的安全性和可靠性,另外,在观看别人代码的时候,清晰理解const所起的作用,对理解对方的程 ...
- Ural 2070:Interesting Numbers(思维)
http://acm.timus.ru/problem.aspx?space=1&num=2070 题意:A认为如果某个数为质数的话,该数字是有趣的.B认为如果某个数它分解得到的因子数目是素数 ...
- 关于在使用scrapy-redis分布式踩过的那些坑:
自己的案列:win7上安装ubuntu (win7作为slaver,ubuntu作为master ) 修改配置文件redis.conf 1)打开配置文件把下面对应的注释掉 # bind 127.0.0 ...
- Acrobat pro Dc 2018破解版|Adobe Acrobat pro Dc 2018中文破解版下载(附序列号/免破解)
Acrobat pro Dc 2018破解版是由Adobe公司开发的一款PDF编辑软件,它可以以PDF格式制作和保存用户的文档,以此方便浏览和打印,或使用更高级的功能,且PDF格式的文档可如实地保留原 ...
- idea-Java文件结构
从项目目录来看 ,分级为project-module-package-classname.java 其中.java文件中包含至多一个publicclass.class文件和多个普通.class文件 . ...
- mybatis-generator生成数据表中注释
0.git clone https://github.com/backkoms/mybatis-generator-comments.git,编译打包,install到本地或delopy私服库中均可. ...
- Hash的应用
思路:此题比较简单,直接贴代码 #include <stdio.h> int main(){ int N; ){ ]={}; ;i<N;i++){ int x; scanf(&quo ...