当前位置: 首页 > news >正文

IDEA的断点调试(Debug)

《IDEA破解、配置、使用技巧与实战教程》系列文章目录

第一章 IDEA破解与HelloWorld的实战编写
第二章 IDEA的详细设置
第三章 IDEA的工程与模块管理
第四章 IDEA的常见代码模板的使用
第五章 IDEA中常用的快捷键
第六章 IDEA的断点调试(Debug)
第七章 IDEA创建Java工程、Maven安装与建立工程、Web工程、Tomcat配置
第八章 IDEA关联数据库
第九章 IDEA常用插件_随时更新


文章目录

  • 《IDEA破解、配置、使用技巧与实战教程》系列文章目录
  • 一、为什么需要Debug
  • 二、Debug的步骤
    • 1、添加断点
    • 2、启动调试
  • 三、多种Debug情况介绍
    • 1、 行断点
    • 2、方法断点
    • 3、字段断点
    • .4、条件断点
    • 5、异常断点
    • 6、线程调试
    • 7、强制结束
  • 四、自定义调试数据视图
  • 五、常见问题


一、为什么需要Debug

编好的程序在执行过程中如果出现错误,该如何查找或定位错误呢?简单的代码直接就可以看出来,但如果代码比较复杂,就需要借助程序调试来查找错误了。

运行编写好的程序时,可能出现的几种情况:
情况1:没有任何bug,程序执行正确!
如果出现如下的三种情况,都又必要使用debug
情况2:运行以后,出现了错误或异常信息。但是通过日志文件或控制台,显示了异常信息的位置。
情况3:运行以后,得到了结果,但是结果不是我们想要的。
情况4:运行以后,得到了结果,结果大概率是我们想要的。但是多次运行的话,可能会出现不是我们想要的情况。
比如:多线程情况下,处理线程安全问题。

二、Debug的步骤

Debug(调试)程序步骤如下:

  1. 添加断点
  2. 启动调试
  3. 单步执行
  4. 观察变量和执行流程,找到并解决问题

1、添加断点

在源代码文件中,在想要设置断点的代码行的前面的标记行处,单击鼠标左键就可以设置断点,在相同位置再次单击即可取消断点。
在这里插入图片描述

2、启动调试

IDEA提供多种方式来启动程序(Launch)的调试,分别是通过菜单(Run –> Debug)、图标(“绿色臭虫”)等等。
在这里插入图片描述
3、单步调试工具介绍
在这里插入图片描述

1、调试器
在此界面可查看关于调式获得到的信息,如变量、方法返回值等
2、控制台
点击控制台后可以跟我们正常运行代码一样,在控制台中输入数据和查看输出情况
3、重启
重新调试
4、停止
停止当前调试
5、Resume Program
快捷键为 F8,跳到一下个断点处
6、Step Over
快捷键为 F6。步过,一行一行地往下走,如果这一行上有方法,直接执行完该方法的内容,不会进入方法里面。
7、Step Into
快捷键为 F5。步入,如果当前行有方法,可以进入方法内部,一般用于进入自定义方法内,不会进入官方类库的方法。
8、Step Out
快捷键为 F7。步出,从步入的方法内退出到方法调用处,此时方法已执行完毕,只是还没有完成赋值。
9、Force Step Into
快捷键为 Alt + Shift + F7。强制步入,能进入任何方法,查看底层源码的时候可以用这个进入官方类库的方法。
10、Run to Cursor
Ctrl+R。运行到光标处,你可以将光标定位到你需要查看的那一行,然后使用这个功能,代码会运行至光标行,而不需要打断点。
11、Show Execution Point
快捷键为 Alt + F10 。如果你的光标在其它行或其它页面,点击这个按钮可跳转到当前Debug代码执行的行。
12、Variable窗口
如下图中的红框,这里显示当前方法里的所有变量。
在这里插入图片描述
13、View Breakpoints(Ctrl + Shift + F8):查看所有断点
14、Mute Breakpoints:使得当前代码后面所有的断点失效, 一下执行到底

说明:在Debug过程中,可以动态的下断点。

三、多种Debug情况介绍

1、 行断点

断点打在代码所在的行上。执行到此行时,会停下来。

2、方法断点

断点设置在方法的签名上,默认当进入时,断点可以被唤醒。也可以设置在方法退出时,断点也被唤醒。如下图所示。
在多态的场景下,在父类或接口的方法上打断点,会自动调入到子类或实现类的方法
在这里插入图片描述

3、字段断点

在类的属性声明上打断点,默认对属性的修改操作进行监控。
在这里插入图片描述

.4、条件断点

如下图所示,在满足arr[i] % 3 == 0的条件下,执行断点。
在这里插入图片描述

5、异常断点

通过下图的方式,对指定的异常进行监控:
在这里插入图片描述

6、线程调试

在这里插入图片描述

7、强制结束

在这里插入图片描述
如上图所示,比如我们进入到一个方法,是用来插入数据到数据库中,一共四行代码,但是到了第二行就已经错误了,我们不想让他继续错下去了,但是还想让这个方法之后的代码稍后继续运行,那我们就让目前的方法强制结束(返回)。

四、自定义调试数据视图

在这里插入图片描述
在这里插入图片描述

五、常见问题

问题:使用Step Into时,会出现无法进入源码的情况。如何解决?
方案1:使用 force step into 即可
方案2:点击Setting -> Build,Execution,Deployment -> Debugger -> Stepping把Do not step into the classess中的java.* 、javax.* 取消勾选即可。如下图所示。
在这里插入图片描述

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • Ajax是什么?如何在HTML5中使用Ajax?
  • 分享一个 .NET EF 6 扩展 Where 的方法
  • ES6 字符串的新增方法(二十)
  • P4-AI产品经理-九五小庞
  • 云原生系列 - Jenkins
  • (C++二叉树05) 合并二叉树 二叉搜索树中的搜索 验证二叉搜索树
  • 【JavaScript 算法】最长公共子序列:字符串问题的经典解法
  • [数据集][目标检测]导盲犬拐杖检测数据集VOC+YOLO格式4635张2类别
  • RK3568 V1.4.0 SDK,USB OTG端子不能被电脑识别出adb设备,解决
  • “信息科技风险管理”和“IT审计智能辅助”两个大模块的部分功能详细介绍:
  • 抖音seo短视频矩阵源码系统开发搭建----开源+二次开发
  • 8、添加第三方包
  • Android --- Kotlin学习之路:协程的使用,什么是协程,为什么要用协程?(学习笔记)
  • Docker 和 k8s 之间是什么关系?
  • 通义千问AI模型对接飞书机器人-模型配置(2-1)
  • 【译】理解JavaScript:new 关键字
  • Android优雅地处理按钮重复点击
  • CSS 提示工具(Tooltip)
  • eclipse的离线汉化
  • hadoop入门学习教程--DKHadoop完整安装步骤
  • Java 9 被无情抛弃,Java 8 直接升级到 Java 10!!
  • macOS 中 shell 创建文件夹及文件并 VS Code 打开
  • Otto开发初探——微服务依赖管理新利器
  • React的组件模式
  • Swift 中的尾递归和蹦床
  • WePY 在小程序性能调优上做出的探究
  • 等保2.0 | 几维安全发布等保检测、等保加固专版 加速企业等保合规
  • 给新手的新浪微博 SDK 集成教程【一】
  • 技术:超级实用的电脑小技巧
  • 区块链将重新定义世界
  • 入门到放弃node系列之Hello Word篇
  • 十年未变!安全,谁之责?(下)
  • 手机app有了短信验证码还有没必要有图片验证码?
  • 没有任何编程基础可以直接学习python语言吗?学会后能够做什么? ...
  • #define、const、typedef的差别
  • #git 撤消对文件的更改
  • #微信小程序:微信小程序常见的配置传值
  • $ is not function   和JQUERY 命名 冲突的解说 Jquer问题 (
  • (32位汇编 五)mov/add/sub/and/or/xor/not
  • (附源码)springboot金融新闻信息服务系统 毕业设计651450
  • (附源码)ssm户外用品商城 毕业设计 112346
  • (接口自动化)Python3操作MySQL数据库
  • (每日持续更新)jdk api之FileReader基础、应用、实战
  • (四)事件系统
  • (一)80c52学习之旅-起始篇
  • (原创)boost.property_tree解析xml的帮助类以及中文解析问题的解决
  • (原創) 如何優化ThinkPad X61開機速度? (NB) (ThinkPad) (X61) (OS) (Windows)
  • (转)Sql Server 保留几位小数的两种做法
  • .apk 成为历史!
  • .NET Core 发展历程和版本迭代
  • .net core 实现redis分片_基于 Redis 的分布式任务调度框架 earth-frost
  • .NET Core实战项目之CMS 第一章 入门篇-开篇及总体规划
  • .net framework 4.8 开发windows系统服务
  • .Net(C#)常用转换byte转uint32、byte转float等
  • .NETCORE 开发登录接口MFA谷歌多因子身份验证