• IDEA调试技巧总结


    一些基础

    在这里插入图片描述♥基础Debug操作:

    • step over:运行下一行(对应上图第一个拐弯的箭头)
    • step into:进入方法内,自定义方法或第三方库方法,JDK方法无法进入
    • force step into:强制进入方法,step into 进不去时可以使用
    • step out:退出方法,与(force)step into搭配使用。
    • Resume Program:恢复程序运行,运行到程序下一个断点的地方。

    断点

    ♥方法断点(菱形):在方法名那一行,会在方法的入口与出口处停留,当然,我们可以点击断点进行配置。
    常用场景:当我们不知道接口的实现类是哪一个时,我们可以通过方法断点来确定,不用上下分析,可以提高我们的效率。
    ♥行断点:圆形。
    断点条件:我们先打一个行断点,右键之后出现了condition,我们可以在其中添加条件,当符合该条件时,才会暂停到此处。
    在这里插入图片描述

    ♥异常断点:在发生相应异常的地方暂停
    常用场景:程序抛出了异常,想快速定位是哪里出现了异常。
    缺点:异常可能会太多
    在这里插入图片描述我们可以在这里进行声明,出现异常时会自动定位。
    在这里插入图片描述在这里插入图片描述♥降帧(Drop Frame)返回到方法调用之前
    常用场景:方法执行完想再执行一次,之前可能有些地方出现了遗漏。

    ♥强制返回:用于结束当前流程,直接返回
    常用·场景:避免后续资源操作(数据库、缓存等)
    例如当程序执行到某一行时,我们发现了错误,要结束当前流程,避免将错误的信息写入数据库中,此时我们直接使用stop是无法完成的,因为它停止的是debug的流程。那么此时我们就可以使用强制返回(force return)。在方法的栈帧中,右键即可发现force return。
    在这里插入图片描述
    ♥执行表达式:高效调试神器,用于执行一段我们实时写的代码
    常用场景:查看、修改数据
    *Evaluate Expression+Remote Debug=远程调试神器
    有时候有的分支我们很难访问到,可能age经常是大于18的,我们可以修改数据,来进入到这个不经常被访问到的分支,然后调试,将测试覆盖的更加全面一点,尽量照顾到每个场景。
    在这里插入图片描述
    ♥多线程调试
    常用场景:多线程场景下,可以跟踪每个线程的执行过程
    在这里插入图片描述All:暂停全部线程,只debug第一个暂停线程
    我们可以看到,图中有三个线程。main线程和线程2都没有被执行。
    我们继续选择All,当我们给三个线程都打上断点后、然后step over,我们发现
    在这里插入图片描述main线程也被执行了,说明我们第一个线程后的断点是失效的,后面的还是会执行,所以选择All,只会debug第一个线程。其他两个线程的运行是无法预测的。但我们选择Thread,并给三个线程全部打上断点,他们都会被断点停住,我们便可以选择调试任意一个线程,按我们想debug的顺序来。

    Thread:暂停进入断点的线程,不影响其他线程执行,所有线程依次debug
    在这里插入图片描述我们可以看到,除了线程1,其他都被执行了。

  • 相关阅读:
    go 获取文件类型
    跟着代码随想录练算法——贪心(JS)
    在线虚拟机安装-云原生边缘计算KubeEdge安装配置(使用负载均衡器LoadBalancer)
    JDK1.8之前与之后 HashMap底层实现原理的差别
    Linux openvino 环境搭建遇见的问题
    AcWing 5147. 数量 + 5148. 字符串匹配 - 思维+字符串处理
    ai语音机器人OKCC的空号检测
    webpack构建vue项目 基础03 之es6语法转化、js代码压缩
    如何使用程序【爬取视频】,完成中秋节大制作
    零代码实现问卷网与巨量引擎的对接
  • 原文地址:https://blog.csdn.net/qq_49425839/article/details/126235081