都2021年了,你还不会用IDEA来Debug?
前言: 一个程序员最大的价值就在于他解决问题的能力
程序报错之后看控制台
①先看有没有Caused by,如果有,还不只一个,那就都看看,因为有可能是其中的一个导致的错误.建议从下往上看.
如果只有一个Caused by,一般情况下这就是错误的原因所在.要看明白错误的原因.
②如果没有Caused by,看有没有Cause,有的话,就看Cause,一般这是错误的原因所在.
③如果既没有Caused by又没有Cause,那就按照提示哪行错误,去错误的那行代码附近去找错误.
比如提示说11行错误了,但是导致错误的原因并不一定就在第11行.因为有可能代码在第9行就错误了,但是到第11行调用时才会报错,
所以程序就会定位到11行,其实它在第9行就已经不正确了.所以说程序定位出哪一行报错,其实错误有时候并不一定在哪一行.
最常见的就是空指针的错误.
④如果既没有Caused by,又没有Cause,也没有提示你哪行错误,那就去看报什么异常—XXXException,然后根据这个XXXException去排查错误原因.
⑤如果控制台没有错误信息,找到可能出错的代码,使用try…catch去捕获异常,使用e.printStackTrace()打印异常信息来排除错误.
给你们的建议程序报了错误,一定要去阅读控制台的错误或者浏览器控制台的错误.然后自己多去通过网络去查,
自己动手去解决,逐渐培养并提高自己解决问题的能力!最后,一定要把Debug用熟练了!一定要把Debug用熟练了!一定要把Debug用熟练了!
01_Debug简介和意义
-
什么是程序DeBug?
-
Debug,是程序开发人员必会的一项调试程序的技能。
-
企业中程序开发和程序调试的比例为1:1.5,可以说如果你不会调试程序,你就没有办法从事编程工作。
-
-
Debug能帮助我们做什么?
- 追踪代码的运行流程。(熟悉公司现有的业务逻辑和项目,通过Debug进行程序调试)
- 程序运行异常定位。(对于有经验的程序员来说,问题都是通过Debug调试出来的)
- 线上问题追踪。(线上问题远程调试,本地环境并不支持远程调试,通过Debug定位)
-
Debug对于程序学习者的意义
- 通过调试能够更好的查看程序的执行流程。
- 复杂的程序逻辑,通过老师的口述讲解,很难理解清楚,这个时候借助调试能够很好的帮助同学们理解程序。
- 定位问题,提高自我解决问题的能力。
02_IDEA中的Debug步骤
Debug必须配合断点使用
设置断点(F9)
调试程序(8个按钮)


03_观察变量
- 查看变量有三种方式:
- 程序区查看变量
- Debugger的Variables中查看变量
- 鼠标悬停到变量名上会弹出当前变量的值

查看输出
04_跳转到当前代码执行的行
-
跳转到当前代码执行的行(Alt + F10)
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-le2ZkkpX-1608857331217)(../../AppData/Roaming/Typora/typora-user-images/image-20201224225954282.png)]](https://i-blog.csdnimg.cn/blog_migrate/77d7b9888a29415f5429220a2f62d4c3.png)
-
作用
- 使程序窗口切换到当前正在运行的程序处。
05_步过调试的使用
-
步过调试
- 步过调试按钮(F8)

- 步过调试按钮(F8)
-
作用
- 步过,一行一行地往下走,如果这一行上有方法不会进入方法。
- 常用于调试过程中不想进入调用的方法体的情况。
06_步入调试的使用
-
步入调试
- 步过调试按钮(F7)

- 步过调试按钮(F7)
-
作用
-
步入,一行一行地往下走,如果这一行上有方法,则进入方法内部。
-
一般用于进入自定义方法内,不会进入官方类库的方法。
-
07_强制步入调试的使用
-
强制步入调试
- 强制步入调试按钮(Alt + Shift + F7)

- 强制步入调试按钮(Alt + Shift + F7)
-
作用
-
进入官方类库方法
-
帮助我们学习和查看JDK源码
-
强制步入自定义方法和官方文档方法
-
08_步出调试的使用
-
步出调试
- 步出调试按钮(Shift + F8)

- 步出调试按钮(Shift + F8)
-
作用
- 从方法内退出到方法调用处。
- 调试的时候,有时候会跳入到自己不想查看的方法体,这个时候使用步出。
09_回退断点调试的使用
-
回退断点
- 回退断点按钮

- 回退断点按钮
-
作用
-
回退到当前方法的调用处。
-
当想重新查看该方法体的执行过程时,不用重新启动Debug,可以使用回退断点方式。
-
10_运行到光标处
- 运行到光标处
-
运行光标处按钮 (F9)

-
作用
- 使程序运行到光标处,而无需频繁设置断点。
-
11_计算表达式
-
计算表达式
-
计算表达式按钮(Alt + F8)

![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-zv6kbPbS-1608857331238)(../../AppData/Roaming/Typora/typora-user-images/image-20201224235636516.png)]](https://i-blog.csdnimg.cn/blog_migrate/758a32d474f59904627e93321bd9a566.png)
-
-
作用
-
假定设置变量,在计算表达式的框里,可以改变变量的值,这样有时候就能很方便我们去调试各种值的情况了。
调试时:有时变量的层级很深,类下又是类,可以New Watch
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-tVM39ssq-1608857331240)(../../AppData/Roaming/Typora/typora-user-images/image-20201225000338772.png)]](https://i-blog.csdnimg.cn/blog_migrate/d309a45074b12e49a6678511b730522c.png)
-
直接把成员变量的属性值显示出来
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-RTjJIWq0-1608857331241)(../../AppData/Roaming/Typora/typora-user-images/image-20201225000557512.png)]](https://i-blog.csdnimg.cn/blog_migrate/12daa5c17308ebf1e2755295ec201559.png)
12_条件断点
-
条件断点
-
右键单击断点处,可以设置进入断点的条件(如下图所示循环1000次不可能一个个去点),设置断点的运行条件。

设置完之后重新运行
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-wUPDIqSM-1608857331245)(../../AppData/Roaming/Typora/typora-user-images/image-20201225001332151.png)]](https://i-blog.csdnimg.cn/blog_migrate/a0039165fc057ba659ca06dbc21fdf7a.png)
-
-
作用
- 通过设置断点条件,在满足条件时,才停在断点处,否则直接运行。
13_多线程调试
- 步骤
-
多线程调试,需要调整断点挂起级别为Thread
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-3FYTGsn3-1608857331246)(../../AppData/Roaming/Typora/typora-user-images/image-20201225002643497.png)]](https://i-blog.csdnimg.cn/blog_migrate/6b706530a8cb8ca19e243456f4e56708.png)

-
Frame中选择线程进行调试
-
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-jvAHA5PL-1608857331249)(../../AppData/Roaming/Typora/typora-user-images/image-20201225002126036.png)]](https://i-blog.csdnimg.cn/blog_migrate/8ed99892c34b93e93257e90ce936bdb9.png)
14其他调试功能
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-v5KadDRD-1608857331251)(../../AppData/Roaming/Typora/typora-user-images/image-20201225003804976.png)]](https://i-blog.csdnimg.cn/blog_migrate/9328354fd0f4ccb3d132849585bd4d4b.png)
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-oidHiwZQ-1608857331252)(../../AppData/Roaming/Typora/typora-user-images/image-20201225003820556.png)]](https://i-blog.csdnimg.cn/blog_migrate/5606831c7176786de7ae7a8e6590c877.png)
作用
- 重新启动程序
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-RyMCdp7o-1608857331255)(../../AppData/Roaming/Typora/typora-user-images/image-20201225003905947.png)]](https://i-blog.csdnimg.cn/blog_migrate/d18f3b2b720fb6b8d912e91ac00df952.png)
作用
- 跳到下一个断点
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-aspKFenT-1608857331257)(../../AppData/Roaming/Typora/typora-user-images/image-20201225003935325.png)]](https://i-blog.csdnimg.cn/blog_migrate/df493401d25a1b8621ebd6d80926cb14.png)
作用
-
终止程序运行
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-t1AwOvvb-1608857331258)(../../AppData/Roaming/Typora/typora-user-images/image-20201225004014616.png)]](https://i-blog.csdnimg.cn/blog_migrate/74433b3b55fdac899deacb750886bc2a.png)
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ZZoyVjTu-1608857331260)(../../AppData/Roaming/Typora/typora-user-images/image-20201225004045320.png)]](https://i-blog.csdnimg.cn/blog_migrate/7918ea4c401780598b5350a2ec70160c.png)
作用
- 对断点进行管理,当程序调试完之后不需要断点了可以批量删除
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-FH0oJsT3-1608857331262)(../../AppData/Roaming/Typora/typora-user-images/image-20201225004124120.png)]](https://i-blog.csdnimg.cn/blog_migrate/62ccee21efcadb3b4fca06cb338582b2.png)
作用
-
使用断点失效,程序调试完成时不想让断点继续起调试作用了,但是仍然需要断点的使用,使用断点失效
**创作不易,点个赞再走呗!**
本文介绍了如何在2021年高效使用IntelliJ IDEA进行Debug,包括Debug的意义、步骤,如设置断点、观察变量、跳转、步过、步入、步出等操作,以及条件断点、多线程调试等高级技巧,旨在提升程序员解决问题的能力。
1290





