【实用工具】2020版IDEA调试入门(简单实用)

2023-11-08

前言


相信大家在运行 Java 代码的时候难免会有自己设下的 bug 找不出来的时候,那叫一个头发纷飞止不住,头发堪忧啊。
所以狗子我去网上看了许多关于 IDEA调式 文章,发现很多过于详细对小白很不友好(如同我),因此我将一些常用的调式操作总结在本文中使其变得更加通俗易懂,更进一步的调式操作当日后使用到的时候再另起一篇文章进行补充。

开始调试


开始调试主要分为两步,第一为设置断点,第二才进行调式操作。

1、设置断点

设置断点的方法基本上大多数的 IDE 都一致,当我们在代码行上的数字旁鼠标左键点击一下,便设置断点成功(可设置多个断点)。断点还可以进行其余设置

  • 取消勾选 Enable 可使该断点失效
  • Condition 框即下图红色框中输入判断语句即可设置断点的触发条件

断点设置
2、Debug调试

启动调式主要有以下三种方法:

  • 快捷键:shift + F9 (可自行更换)
  • 工具栏点击小甲虫样式debug 按钮
  • “Run” 菜单下的 debug

debug

调试界面解释

点击了调试按钮之后,我们 IDEA 的底部会变成以下形式。既然要开始调试,我们总得先对调试界面有一个初步的认识不是,因此在下面我对常用的部分进行解释
调式界面

1、调试器
在此界面可查看关于调式获得到的信息,如变量、方法返回值等

2、控制台
点击控制台后可以跟我们正常运行代码一样,在控制台中输入数据和查看输出情况

3、Show Execution Point
快捷键为 Alt + F10 。如果你的光标在其它行或其它页面,点击这个按钮可跳转到当前代码执行的行。

4、Step Over
快捷键为 F8步过,一行一行地往下走,如果这一行上有方法不会进入方法。

5、Step Into
快捷键为 F7步入,如果当前行有方法,可以进入方法内部,一般用于进入自定义方法内,不会进入官方类库的方法。

6、Force Step Into
快捷键为 Alt + Shift + F7强制步入,能进入任何方法,查看底层源码的时候可以用这个进入官方类库的方法。

7、Step Out
快捷键为 Shift + F8步出,从步入的方法内退出到方法调用处,此时方法已执行完毕,只是还没有完成赋值。

8、Run to Cursor
Alt + F9运行到光标处,你可以将光标定位到你需要查看的那一行,然后使用这个功能,代码会运行至光标行,而不需要打断点。

9、Variable窗口
如图中的红框,这里显示当前方法里的所有变量

10、Watch窗口
在Watches里,可查看自己需要的变量。点击窗口中的加号按钮(New Watch),输入需要查看的变量。或者可以从 Variables窗口 里拖到 Watche窗口 里查看。如果没有 Watch窗口 显示,点击一下 Variable窗口 中的眼睛样式按钮即可
窗口

步过、步入和强制步入区别

这三个按钮的功能各有千秋,都具有进行到下一步的功能。当我们写的 bug 不同时,我们就得用到不同的按钮,下面我用表格列出三者的不同

是否可跳转 是否可进入自定义方法 是否可进入类库方法
步过
步入
强制步入

好了,介绍就到这里结束啦,本文中提及的都是很基础的操作,但大多数都是很常用的,希望可以起到帮助(主要是忘记的时候能回来看看)。最后推荐,有时候你进行实操的手会比你现在顶着我的眼睛更加记忆深刻
光速撤退(Σ⊙㉨⊙)

撤离现场

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

【实用工具】2020版IDEA调试入门(简单实用) 的相关文章

  • Android:java.lang.OutOfMemoryError:

    我在 Android 上开发了一个使用大量图像的应用程序 可绘制文件夹中有很多图像 比如说超过 100 张 我正在开发图像动画应用程序 我使用 imageview 来显示 GIF 图像 我使用了将 gif 图像分割成多个 PNG 格式图像的
  • Android Toast 消息不起作用

    我正在通过 Andengine 为 Android 开发游戏 我有 MainActivity 类和 GameScene 类 我在 GameActivity 中使用 Toast 消息 它正在发挥作用 Toast makeText this H
  • 简单 XML 框架:ElementMap 中的对象具有“类似内联”的行为

    我正在尝试在 Android 上序列化自定义对象的 Hashmap 以获得如下 xml
  • 将处理项目移至 Eclipse

    我已经在处理项目上工作了一段时间 现在想将其移至 Eclipse 中 我已经在 Eclipse 环境中安装了 Proclipse 我有很多扩展名为 pde 的文件 然而 Proclipse 文件都以 java 结尾 所有 pde 文件都存在
  • 类型已知,但方法指的是缺失类型

    我对 java 和 Eclipse 不太有经验 但遇到以下问题 我正在写类似的东西 Point3D myPoint myClass myMethod arg 我收到错误 方法 myMethod myType arg 引用缺失的类型 Poin
  • 如何从 Java 访问 Windows 设备管理器中的信息?

    我有一个串行 USB 设备 并且其中多个设备可以连接到计算机 我需要查询和检索设备连接到的 COM 端口列表 在 Windows 设备管理器中 您可以获得当前连接的设备的 COM 端口 友好名称 该列表是动态的 从注册表中读取不工作 htt
  • JAXB 继承冲突 - 重新注释子类

    目前我的项目中有这样的环境 public abstract class Foo private List
  • 如何将本机数据库运算符 (postgres ~) 与 JPA 标准生成器一起使用?

    我使用 JPA 2 0 标准构建以下查询 简化 select n from notif n where n message b la 我正在使用 postgresql 数据库 我真的需要 运算符 而不是像 我可以使用与 CriteriaBu
  • Java Junit 测试 HTTP POST 请求

    我需要测试以下方法而不改变方法本身 该方法向服务器发出 POST 方法 但我需要制作一个独立于服务器的测试用例 在将其重定向到本地文件之前 我测试了类似的方法 但为此我将协议指定为文件 主机名指定为 localhost 端口指定为 1 我的
  • 使用 kryo 注册课程的策略

    我最近发现了 kryonet 库 它非常棒并且非常适合我的需求 然而 我遇到的一个问题是制定一种好的策略来注册所有可以转移的类 我知道我可以在每个对象中编写一个静态方法 该方法将返回它使用的所有类的列表 但我真的不想这样做 为了我自己的时间
  • Spring HATEOAS 和 HAL:更改 _embedded 中的数组名称

    我正在尝试使用 Spring HATEOAS 构建符合 HAL 的 REST API 经过一番摆弄后我终于开始工作了mostly正如预期的那样 示例 输出现在看起来像这样 links self href http localhost 808
  • FileObserver 不适用于 Android 6.0 Marshmallow (API 23) 中的外部存储

    我有一个应用程序可以观察外部存储上的公共目录FileObserver 它运行良好Lollipop设备 我想添加对Marshmallow 所以我用它设置了一台 Nexus 9 平板电脑 在 Marshmallow 设备上 它失败 在 Loll
  • 在拇指上方显示修改后的 JSlider 值

    有没有一种简单的方法可以在使用某些 外观和感觉 的同时更改 JSlider 上方标签中显示的值 为了清楚起见 我正在谈论这个值 具体来说 我想显示除以 1000 的值而不是值本身 我知道如果我显示它们 我可以为刻度设置标签 但用户将不得不猜
  • for循环中更新JLabel的问题

    我的程序的想法是从之前在其他 JFrame 中保存的列表中选择一个名称 我想在标签中一个接一个地打印所有名称 它们之间有很小的延迟 然后停在其中一个名称上 问题是lbl setText String 如果有多个则不起作用setText co
  • JERSEY:错误跟踪:java.lang.IllegalStateException:实体输入流已关闭

    我正在使用 Jersey 2 x 以下是我的控制器 GET Path id Produces application json public Response getUser PathParam id int userId Context
  • 接口是否像对象一样对待?

    为什么下面的代码可以工作 interface I class A implements I public String toString return in a class B extends A public String toStrin
  • Janusgraph 0.3.2 + HBase 1.4.9 - 无法设置 graph.timestamps

    我在 Docker 容器中运行 Janusgraph 0 3 2 并尝试使用运行 HBase 1 4 9 的 AWS EMR 集群作为存储后端 我可以运行 gremlin server sh 但如果我尝试保存某些内容 我会得到粘贴在下面的堆
  • Hibernate 标准接受 %% 值

    我正在使用下面的 Hibernate 代码来过滤workFlowName crt add Restrictions like workFlowName workFlow MatchMode ANYWHERE crt is the crite
  • 检查按钮是否可用?如果没有,请等待 5 秒钟,然后再次检查?

    基本上我想看看此刻是否可以单击按钮 如果没有我想再试一次 所以我需要某种 goto 函数来返回到代码的前一行 尽管我怀疑我写得非常糟糕 但它本来可以做得更容易 try driver findElement By xpath button i
  • 从 InputStream 中删除换行符

    我喜欢从一个文件中删除所有换行符 对于 n 和 r n java io InputStream 在读取文件时 相应的方法如下所示 param target linkplain File return linkplain InputStrea

随机推荐

  • 实例:

    语句 2 通常语句 2 用于评估初始变量的条件 语句 2 同样是可选的 如果语句 2 返回 true 则循环再次开始 如果返回 false 则循环将结束 提示 如果您省略了语句 2 那么必须在循环内提供 break 否则循环就无法停下来 这
  • 若依v3.2问题解决:菜单路由不匹配 / 跳转路由页面空白

    问题1 解决方法 问题2 解决方法 问题1 菜单路由不匹配 在菜单管理中匹配代码中的相应组件 可是在页面上总是报匹配错误 下面是报错情况和相关数据库 解决方法 因为店铺管理是一个目录 而店铺详情和店铺列表是菜单 路由规则中目录要有一个菜单匹
  • 台式机跳过连网

    第一次激活电脑 台式 本人是联想 没有内置无线网卡 就非让连接以太网 有线 又没有 查了好久 终于解决了 方法一 taskmgr 1 Shift F10 台式机 2 输入taskmgr 3 去任务管理器找到OOBENetworkConnec
  • Unity ToLua 之 Lua调用C#(二)

    Unity ToLua 之 Lua调用C 二 一 ToLua调用C 中的List和Dictionary 注意List和dictionary对应的泛型需要先填写到CustomSetting中 然后生成 XLua 中遍历Dictionary可以
  • 进IT名企大厂,95%应届生不知道的最短路径

    据央视新闻报道 2022年高校毕业生将达到1076万人 据称是史上最难就业季 毕业生就业压力暴增 加之随着今年疫情的不确定爆发 不少企业减少了校园招聘 留学生扎堆回国 可以说是将 就业难 进行到底了 但在此情况下 互联网大厂 IT名企却在逆
  • 【React + Ant Design】表单如何在前置项未填写时禁止后置项交互并提示

    在 react antd 中 对表单做在前置项未填写时禁用后置项交互并提示的效果 情景 最近有这么个需求 某个业务中 要填写一张表单 其中有这样两项 选择数据连接和选择数据表 数据表是数据连接下所拥有的表 通常 没选数据连接 数据表就拿不到
  • C++(day5)

    思维导图 小练习 实现一个图形类 Shape 包含受保护成员属性 周长 面积 公共成员函数 特殊成员函数书写 定义一个圆形类 Circle 继承自图形类 包含私有属性 半径 公共成员函数 特殊成员函数 以及获取周长 获取面积函数 定义一个矩
  • 无线水标数值如何上传服务器,一种精准上传数据的智能水表及用水量记录上传方法...

    1 一种精准上传数据的智能水表 包括计数上传模组电路板 1 齿轮组件 2 计数组件 3 叶轮组件 4 所述叶轮组件 4 位于水表内部的流道内 叶轮组件 4 向上连接驱动齿轮系组件 2 齿轮系组件 2 连接计数器组件 3 计数器组件 3 连接
  • kali控制安卓(拍照、通讯录、GPS等)

    只是感觉挺有趣的就学了一下并分享出来 仅供学习使用 1 生成apk 目标手机安装 msfvenom p android meterpreter reverse tcp LHOST 192 168 1 176 LPORT 8888 R gt
  • python 添加父目录到工作路径中,解决import无法找到路径的问题

    解决方法 在运行的程序中添加 import os import sys sys path append sys path append os pardir
  • C# abstract抽象类的定义,作用(使用场景)

    关于C 中抽象类的一些感想 写代码已经有很长一段时间 但感觉成长很少 基本是为了功能开发而开发 我相信80 的程序员都一样 基本都是拿网上的开源项目改改改后实现功能就行 很少会去深入 去思考为什么要这么来实现 所以有了今天的文章 我作为程序
  • Qt 迭代器(的两种风格,及方法简介)

    目录 Qt 迭代器 的两种风格 及方法简介 qt qlist简单迭代器的使用 Qt学习 qt中的迭代器举例 一 java风格迭代器 容器类 只读迭代器类 读写迭代器类 QList lt T gt QQueue lt T gt QListIt
  • OpenHarmony兼容性平台认证接入

    最近在做OpenHarmony兼容性平台认证接入 在此记录一下整个过程遇到的问题和解决办法 注册账号 进入OpenHarmony兼容是测评主页 https www openharmony cn certification document
  • DHCP服务器

    目录 一 DHCP是什么 二 DHCP服务器地址池是如何正确分配的 三 DHCP工作原理 广播域内 四 DHCP中继代理原理 广播域外 五 更新IP租约 六 超级作用域 七 DHCP配置案例 中继 一 DHCP是什么 动态主机配合协议 使用
  • C++内联函数inline

    C 内联函数 inline 1 基本内容 C 中内联函数 inline 和传统C语言宏定义 define 类似 原则上实现的过程都是表达名称或内容的替换 但是处理方法上会存在差别 内联函数的推出 也正是C 引入类后 为了取代存在一些缺点的宏
  • 软件工程师在职业生涯中说的32句话

    原文地址 http zhangjiankun880 iteye com blog 1625393 这篇文章来自于一篇旧博文 的启发 我已经用现在语言和技术更新了它 1 它在我的电脑上运行得很好 不信的话 你可以过来看 2 你有权限登录 你是
  • 离线数仓流程

    一 数据仓库 1 什么是数据仓库 1 数据仓库是为企业所有决策定制过程 提供所有系统数据支持的战略集合 2 通过对数据仓库中数据的分析 可以帮助企业 改进业务流程 控制成本 提高产品质量等 3 数据仓库 并不是数据的最终目的地 而是为数据最
  • Oracle VirtualBox 6.1.18 安装扩展包

    VirtualBox安装扩展包 下载的Oracle VM VirtualBox Extension Pack包不是 vbox extpack格式的或扩展名的 怎么办 见下文插曲 下载扩展包 扩展名为vbox extpack 关闭虚拟机电脑
  • Linux笔记:文件共享服务Samba基础使用

    文章目录 目的 基础使用 软件包安装 独立服务器 客户端 总结 目的 linux中目前还比较常用的文件共享服务主要就是NFS和Samba 但其实NFS一般也就linux间用用 Samba通常是一个更加好的选择 可以方便的在linux和win
  • 【实用工具】2020版IDEA调试入门(简单实用)

    文章目录 前言 开始调试 调试界面解释 步过 步入和强制步入区别 前言 相信大家在运行 Java 代码的时候难免会有自己设下的 bug 找不出来的时候 那叫一个头发纷飞止不住 头发堪忧啊 所以狗子我去网上看了许多关于 IDEA调式 文章 发