都2021年了,你还不会用IDEA来Debug?

本文介绍了如何在2021年高效使用IntelliJ IDEA进行Debug,包括Debug的意义、步骤,如设置断点、观察变量、跳转、步过、步入、步出等操作,以及条件断点、多线程调试等高级技巧,旨在提升程序员解决问题的能力。

都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能帮助我们做什么?

    1. 追踪代码的运行流程。(熟悉公司现有的业务逻辑和项目,通过Debug进行程序调试)
    2. 程序运行异常定位。(对于有经验的程序员来说,问题都是通过Debug调试出来的)
    3. 线上问题追踪。(线上问题远程调试,本地环境并不支持远程调试,通过Debug定位)
  • Debug对于程序学习者的意义

    1. 通过调试能够更好的查看程序的执行流程。
    2. 复杂的程序逻辑,通过老师的口述讲解,很难理解清楚,这个时候借助调试能够很好的帮助同学们理解程序。
    3. 定位问题,提高自我解决问题的能力。

02_IDEA中的Debug步骤

Debug必须配合断点使用

设置断点(F9)

调试程序(8个按钮)

在这里插入图片描述

在这里插入图片描述

03_观察变量

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

在这里插入图片描述

查看输出

04_跳转到当前代码执行的行

  • 跳转到当前代码执行的行(Alt + F10)
    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-le2ZkkpX-1608857331217)(../../AppData/Roaming/Typora/typora-user-images/image-20201224225954282.png)]

  • 作用

    • 使程序窗口切换到当前正在运行的程序处。

05_步过调试的使用

  • 步过调试

    • 步过调试按钮(F8)在这里插入图片描述
  • 作用

    • 步过,一行一行地往下走,如果这一行上有方法不会进入方法。
    • 常用于调试过程中不想进入调用的方法体的情况。

06_步入调试的使用

  • 步入调试

    • 步过调试按钮(F7)在这里插入图片描述
  • 作用

    • 步入,一行一行地往下走,如果这一行上有方法,则进入方法内部。

    • 一般用于进入自定义方法内,不会进入官方类库的方法。

07_强制步入调试的使用

  • 强制步入调试

    • 强制步入调试按钮(Alt + Shift + F7)
      [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-VnVp5kw6-1608857331229)(../../AppData/Roaming/Typora/typora-user-images/image-20201224230241780.png)
  • 作用

    • 进入官方类库方法

    • 帮助我们学习和查看JDK源码

    • 强制步入自定义方法和官方文档方法

08_步出调试的使用

  • 步出调试

    • 步出调试按钮(Shift + F8)在这里插入图片描述
  • 作用

    • 从方法内退出到方法调用处。
    • 调试的时候,有时候会跳入到自己不想查看的方法体,这个时候使用步出。

09_回退断点调试的使用

  • 回退断点

    • 回退断点按钮 在这里插入图片描述
  • 作用

    • 回退到当前方法的调用处。

    • 当想重新查看该方法体的执行过程时,不用重新启动Debug,可以使用回退断点方式。

10_运行到光标处

  • 运行到光标处
    • 运行光标处按钮 (F9)在这里插入图片描述

    • 作用

      • 使程序运行到光标处,而无需频繁设置断点。

11_计算表达式

  • 计算表达式

    • 计算表达式按钮(Alt + F8)在这里插入图片描述

      [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-zv6kbPbS-1608857331238)(../../AppData/Roaming/Typora/typora-user-images/image-20201224235636516.png)]

  • 作用

    • 假定设置变量,在计算表达式的框里,可以改变变量的值,这样有时候就能很方便我们去调试各种值的情况了。

    调试时:有时变量的层级很深,类下又是类,可以New Watch

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-tVM39ssq-1608857331240)(../../AppData/Roaming/Typora/typora-user-images/image-20201225000338772.png)]

直接把成员变量的属性值显示出来

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-RTjJIWq0-1608857331241)(../../AppData/Roaming/Typora/typora-user-images/image-20201225000557512.png)]

12_条件断点

  • 条件断点

    • 右键单击断点处,可以设置进入断点的条件(如下图所示循环1000次不可能一个个去点),设置断点的运行条件。

      在这里插入图片描述

    设置完之后重新运行

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-wUPDIqSM-1608857331245)(../../AppData/Roaming/Typora/typora-user-images/image-20201225001332151.png)]

  • 作用

    • 通过设置断点条件,在满足条件时,才停在断点处,否则直接运行。

13_多线程调试

  • 步骤
    • 多线程调试,需要调整断点挂起级别为Thread

      [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-3FYTGsn3-1608857331246)(../../AppData/Roaming/Typora/typora-user-images/image-20201225002643497.png)]

      在这里插入图片描述

    • Frame中选择线程进行调试

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-jvAHA5PL-1608857331249)(../../AppData/Roaming/Typora/typora-user-images/image-20201225002126036.png)]

14其他调试功能

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-v5KadDRD-1608857331251)(../../AppData/Roaming/Typora/typora-user-images/image-20201225003804976.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-oidHiwZQ-1608857331252)(../../AppData/Roaming/Typora/typora-user-images/image-20201225003820556.png)]

作用

  • 重新启动程序

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-RyMCdp7o-1608857331255)(../../AppData/Roaming/Typora/typora-user-images/image-20201225003905947.png)]

作用

  • 跳到下一个断点

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-aspKFenT-1608857331257)(../../AppData/Roaming/Typora/typora-user-images/image-20201225003935325.png)]

作用

  • 终止程序运行

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-t1AwOvvb-1608857331258)(../../AppData/Roaming/Typora/typora-user-images/image-20201225004014616.png)]

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ZZoyVjTu-1608857331260)(../../AppData/Roaming/Typora/typora-user-images/image-20201225004045320.png)]

作用

  • 对断点进行管理,当程序调试完之后不需要断点了可以批量删除

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-FH0oJsT3-1608857331262)(../../AppData/Roaming/Typora/typora-user-images/image-20201225004124120.png)]

作用

  • 使用断点失效,程序调试完成时不想让断点继续起调试作用了,但是仍然需要断点的使用,使用断点失效

                          **创作不易,点个赞再走呗!**
    
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值