都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)]

作用

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

                          **创作不易,点个赞再走呗!**
    
<think>嗯,用户问的是关于最新版本的IntelliJ IDEA进行插件开发时使用的Java版本。首先,我需要确认当前最新的IntelliJ IDEA版本是什么。根据我的知识库,截至202310月,最新的稳定版本是2023.2,但可能还有更新的。不过可能需要核实一下。 接下来,关于插件开发使用的Java版本,我记得IntelliJ IDEA插件开发通常要求使用特定的Java版本,这可能与IDEA自身运行所用的版本有关。比如,JetBrains官方文档可能有说明,插件需要兼容JDK的哪个版本。例如,之前的版本可能要求JDK 11或17,但最新的可能需要更高的版本。 另外,用户可能想知道的是在开发插件时应该使用哪个Java版本来编写代码,以及需要配置的JDK版本。可能还需要提到Gradle或IntelliJ Platform Plugin SDK的设置,因为这些工具会影响Java版本的选择。 需要确认的是,虽然IDEA本身可能支持更高版本的Java运行,但插件开发可能需要与特定版本的JVM兼容,以确保插件能在目标用户的IDEA版本上运行。例如,如果用户使用较旧的IDEA版本,可能需要较低的Java版本,但最新版的插件开发可能要求更高的版本。 可能需要查阅JetBrains的官方文档或者开发者指南,看看他们推荐的JDK版本。例如,在JetBrains的插件开发文档中,通常会明确指出需要使用的JDK版本,比如JDK 17或更高。 同时,考虑到用户可能对Gradle构建工具的使用有疑问,需要说明在build.gradle文件中如何配置Java版本,以及如何设置插件兼容性。 总结来说,回答需要包括最新的IDEA版本号,推荐的JDK版本,构建工具配置,以及可能的注意事项,比如向后兼容性或不同版本IDEA的要求差异。</think>截至202310月,最新版本的 **IntelliJ IDEA 2023.2** 的插件开发要求如下: 1. **Java版本要求** - 官方推荐使用 **JDK 17** 作为开发环境。 - 插件编译的目标字节码需兼容 **Java 11**(即插件代码的语法和API需在Java 11及以上运行)。 - 注意:若插件需要兼容旧版IDEA(如2021.x及更早),则需降级到 **Java 11** 进行开发。 2. **关键依赖配置** 在插件的 `build.gradle` 文件中需指定兼容性: ```gradle intellij { version = '2023.2' // 对应IDEA版本 type = 'IC' // Community Edition } compileOptions { sourceCompatibility = JavaVersion.VERSION_17 targetCompatibility = JavaVersion.VERSION_11 // 向下兼容 } ``` 3. **注意事项** - **新特性支持**:Java 17的语法(如`switch表达式`、`密封类`)可直接使用。 - **兼容性问题**:若插件需支持旧版IDEA(如2021.3以下),需在代码中避免使用高版本API。 - **开发工具链**:建议通过JetBrains官方提供的 [IntelliJ Platform Plugin Template](https://github.com/JetBrains/intellij-platform-plugin-template) 快速初始化项目。 4. **验证方法** 在IDEA中通过 `Help > Diagnostic Tools > Debug Log Settings` 输入 `#com.intellij.openapi.application.ex.ApplicationInfoEx`,可查看当前运行时JDK版本。 建议参考官方文档 [IntelliJ Platform SDK](https://plugins.jetbrains.com/docs/intellij/getting-started.html) 获取最新要求。
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值