idea debug 各个步骤含义

news2024/11/15 19:23:34

基本功能

在这里插入图片描述

IntelliJ IDEA 的 Debug 功能提供了强大的调试支持,允许开发者逐步执行代码,检查变量值,评估表达式等。以下是 Debug 模式中常见的几个按钮及其含义:

  1. Show Execution Point (显示执行点):将光标跳转到当前正在执行的代码行。

  2. Step Over (逐过):执行当前行的代码,如果当前行调用了某个方法,不会进入该方法内部,而是将整个方法作为一个整体执行。

  3. Step Into (逐入):执行当前行的代码,如果当前行调用了某个方法,则会进入该方法内部,并在方法的第一行停下。

  4. Force Step Into (强制逐入):与“逐入”类似,但是即使是对编译器生成的代码或者是不希望进入的方法(例如,由第三方库提供的方法)也会强制进入。

  5. Step Out (逐出):从当前方法中跳出,返回到调用该方法的地方,并停在方法调用的下一行。

  6. Run to Cursor (运行到光标处):程序会继续执行,直到达到光标所在的位置停下,这是一种快速跳过多行代码的方法。

  7. Evaluate Expression (计算表达式):允许开发者在当前的上下文中计算任意表达式的值,非常有用于检查或修改变量的值。

  8. Resume Program (继续程序):继续执行程序,直到遇到下一个断点。

  9. Stop (停止):停止当前的 Debug 会话。

  10. View Breakpoints (查看断点):打开一个窗口,列出所有设置的断点,并允许你修改或删除它们。

  11. Mute Breakpoints (静音断点):暂时禁用所有断点,让程序不在任何断点处停止,但不会删除这些断点。

这些按钮提供了强大的调试功能,帮助开发者理解和修复代码中的问题。

高级功能

在这里插入图片描述

在 IntelliJ IDEA 的 Debug 模式下,除了常用的调试操作外,还有一些高级功能,它们的含义如下:

  1. Reset Frame (重置帧):这个功能可以将当前方法的执行状态回滚到方法的开始。这对于想要重新执行某个方法中的代码而不重启整个调试会话非常有用。

  2. Throw Exception (抛出异常):允许你在当前执行点抛出一个异常。这对于测试异常处理逻辑非常有用。

  3. Force Return (强制返回):立即从当前执行的方法中返回,你可以指定返回值。这对于跳过方法的剩余部分执行非常有用,尤其是当你知道方法的剩余部分对当前调试不重要时。

  4. Copy Stack (复制堆栈):将当前的堆栈跟踪复制到剪贴板。这对于记录或分享当前的调用堆栈非常有用。

  5. Export Threads… (导出线程):将当前的线程信息导出到一个文件中。这对于分析或记录当前的线程状态非常有用。

  6. Customize Threads View… (自定义线程视图):允许你自定义 Debug 窗口中显示的线程信息,例如,你可以选择隐藏某些线程,以便更专注于你感兴趣的线程。

  7. Add Stepping Filter… (添加步进过滤器):允许你定义一组规则,IDEA 在执行 Step Into 操作时会自动跳过这些规则定义的代码。这对于避免进入不感兴趣的代码,如库代码或框架代码,非常有用。

  8. Async Stack Traces (异步堆栈跟踪):提供了一种方式来更好地理解和调试异步代码的执行流。它可以帮助你追踪异步操作的来源,即使在多个线程或事件循环中执行。

这些高级功能提供了更多的灵活性和控制,使得调试更加高效和方便。

watches 用法

在 IntelliJ IDEA 的 Debug 模式中,“Watches” 是一个非常有用的功能,它允许你监视表达式或变量的值,并在调试会话期间实时更新这些值。以下是 “Watches” 功能的基本用法:

添加监视表达式或变量

在这里插入图片描述

  1. 在 Debug 窗口中打开 “Watches” 标签页:首先,确保你已经在 Debug 模式下,然后在 Debug 工具窗口中找到并点击 “Watches” 标签页。

  2. 添加监视项:有几种方法可以添加监视项:

    • 直接输入:在 “Watches” 面板中,点击 “+” 按钮,然后在弹出的输入框中输入你想要监视的表达式或变量名。
    • 通过代码选择:在编辑器中,选中你想要监视的变量或表达式,右键点击,选择 “Add to Watches”。
    • 通过变量视图:在 “Variables” 标签页中,右键点击你想要监视的变量,然后选择 “Add to Watches”。

查看和编辑监视项

  • 查看值:添加到 “Watches” 中的表达式或变量的值会在调试会话期间实时更新。你可以直接在 “Watches” 面板中查看这些值。
  • 编辑表达式:如果需要修改监视的表达式,可以直接在 “Watches” 面板中双击相应的表达式,然后进行编辑。

移除监视项

  • 移除单个监视项:如果想要移除某个特定的监视项,可以在 “Watches” 面板中选中该项,然后点击 “-” 按钮。
  • 清空所有监视项:如果想要一次性移除所有监视项,可以点击 “Watches” 面板中的 “Clear All” 按钮(通常显示为一个垃圾桶图标)。

使用场景

“Watches” 功能非常适合以下几种场景:

  • 监视特定变量的值变化:当你想要跟踪某个变量在调试过程中的值变化时,可以将其添加到监视列表中。
  • 评估复杂表达式的值:如果你想要评估一个复杂表达式的值,而不是单个变量,可以将该表达式添加到监视列表中。
  • 调试循环中的变量:在循环结构中,监视特定变量可以帮助你理解循环的执行流程和变量值的变化情况。

通过有效使用 “Watches” 功能,可以更加深入地理解和调试你的代码。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2076649.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

如何使用ssm实现模具制造企业订单跟踪管理系统+vue

TOC ssm256模具制造企业订单跟踪管理系统vue 绪论 1.1 研究背景 当前社会各行业领域竞争压力非常大,随着当前时代的信息化,科学化发展,让社会各行业领域都争相使用新的信息技术,对行业内的各种相关数据进行科学化,…

编程仙尊——深入理解指针(1)

目录 1.认识指针 2.指针变量和地址 2.1取地址操作符(&) 2.2 指针变量和解引用操作符 2.3 指针变量的大小 3.指针类型的意义 3.1指针的解引用 3.2 指针-整数 3.3 void*指针 1、认识指针 在生活中,一栋楼的每个房间都会有房间号 …

OpenGL实现3D游戏编程【连载5】——纹理坐标、纹理贴图

OpenGL实现3D游戏编程【连载5】——纹理坐标、纹理贴图 欢迎来到zhooyu的专栏。 个人主页:【zhooyu】 文章专栏:【OpenGL实现3D游戏编程】 本专栏内容: 我们从游戏的角度出发,用C去了解一下游戏中的功能都是怎么实现的。这一切还…

六、前后端分离通用权限系统(6)

🌻🌻 目录 一、用户管理1.1、代码生成器1.2、用户管理后端 CRUD1.2.1、controller1.2.2、service 接口1.2.3、service 接口实现1.2.4、mapper1.2.5、xml1.2.6、knife4j 测试 1.3、用户管理前端 CRUD1.3.1、添加路由1.3.2、定义基础 api1.3.3、实现页面功…

架构设计(5)服务网格(Service Mesh)

服务网格(Service Mesh)是一个专门设计的基础设施层,用于管理和处理微服务架构中服务间的通信。服务网格通过在服务间插入代理,提供了一种透明的方式来控制、监控和管理服务之间的流量。以下是关于服务网格的详细介绍,…

( 基于SystemView软件)AM调制与解调仿真实验

一、实验目的: 熟悉使用SystemView软件,了解各部分功能模块的操作和使用方法。 通过实验进一步观察、了解模拟信号AM调制、解调原理。 掌握AM调制信号的主要性能指标。 比较、理解AM调制的相干解调原理。 二、实验器材: 装有SystemView…

【有道云-注册安全分析报告】

前言 由于网站注册入口容易被黑客攻击,存在如下安全问题: 暴力破解密码,造成用户信息泄露短信盗刷的安全问题,影响业务及导致用户投诉带来经济损失,尤其是后付费客户,风险巨大,造成亏损无底洞…

WLAN网络优化,还得看这三剑客!

号主:老杨丨11年资深网络工程师,更多网工提升干货,请关注公众号:网络工程师俱乐部 晚上好,我的网工朋友。 WLAN网络成为了企业网络接入的主要手段之一,用户对于WLAN网络的体验性也有了更高的要求。 对于W…

雷达水位监测站低功耗及免维护设计

QY-15雷达水位监测站采用非接触雷达,无磨损无污染产品概述 雷达水位监测站是一款高精度且具有水面波动滤波处理的地表水水位测量产品。它采用喇叭天线的设计,降低功耗,宽范围的输入电压,专门设计于适合野外无人值守的野外自动站应…

图像噪声与被污染图像的恢复

系列文章目录 文章目录 系列文章目录前言一、图像退化模型二、图像噪声2.2 图像噪声的分类2.2.1 加性噪声2.2.2 乘性噪声 三、图像噪声的概率密度函数3.1 高斯噪声3.2 瑞利噪声3.3 均匀分布噪声3.4 脉冲噪声3.5 图像信噪比 四、图像噪声的概率密度函数 前言 数字图像常会因受一…

Elasticsearch之DSL查询语法

​ 前言 在上一篇文章中,我们通过RestClient的Bulk操作导入了大量的hotel数据到elasticsearch,实现了elasticsearch的数据存储功能。但elasticsearch最擅长的还是搜索和数据分析。本篇文章会通过使用DSL来介绍elasticsearch的搜索功能。 1. DSL查询分…

C++ 类和对象 3

构造函数扩展 构造函数体内的赋值:构造函数一般是用于类对象的初始化的,但严谨来说并不是成员变量的初始化,内置类型的初始化是在生成的同时赋值而且仅有一次,但是在构造函数体内是能对成员变量进行多次赋值的。所以在函数体内的…

GeoStudio2024:地质工程的瑰宝下载安装介绍

引言 青山隐隐,流水潺潺,吾心所向,乃地质之奥秘。GeoStudio2024,如同一卷古籍,蕴藏无尽智慧,助吾等探寻地质之真谛。今以李白之笔,述其妙用,愿与君共赏。 初识GeoStudio2024 初见…

优化系统性能:深入探讨Web层缓存与Redis应用的挑战与对策

Web层缓存对于提高应用性能至关重要,它通过减少重复的数据处理和数据库查询来加快响应时间。例如,如果一个用户请求的数据已经缓存,服务器可以直接从缓存中返回结果,避免了每次请求都进行复杂的计算或数据库查询。这不仅提高了应用…

【iOS】iOS中简单的网络请求

目录 前言认识API和RULAPIURL两者的联系 简单的网络请求1. 创建URL对象2. 创建URLRequest对象3. 设置请求头(如果需要)4. 发送请求异步请求同步请求 5. 处理请求结果6.启动数据任务完整代码示例及运行结果: 关于同步请求和异步请求同步请求异…

vue3 cascader省市区三级联动如何指定字段,如何根据id查到对应的名字

如果我们接口数据字段名不是value和code。要加个props :props"{ value:code,label:regionName}"根据id查name需要一个ref和一个change事件<el-cascader :options"areaData" ref"addressCodeRef" change"handleChange" :props"…

MySQL(五)——表设计(约束、范式、表关系)

文章目录 表设计约束非空约束&#xff08;NOT NULL&#xff09;唯一约束&#xff08;UNIQUE&#xff09;主键约束&#xff08;PRIMARY KEY&#xff09;外键约束&#xff08;FOREIGN KEY&#xff09;默认值约束&#xff08;DEFAULT&#xff09;检查约束&#xff08;CHECK&#x…

考研数学最迟什么时候要结束强化?10月才做真题是不是晚了?

已经快9月了&#xff0c;很多同学的考研数学的强化也接近尾声&#xff0c;这个时候要注意两个事情&#xff1a; 1、如果你还有很多没学完&#xff0c;不要强行收尾&#xff0c;稳扎稳打的把强化给结束了。 2、强化结束之前&#xff0c;要清理完所有在强化阶段产生的错题&…

Kafka日志及常见问题

目录 1.Topic下的消息是如何存储的 1.1log文件追加记录所有消息 1.2index和timeindex加速读取日志信息 2.文件清理机制 2.1如何判断哪些日志文件过期了 2.2日志清理策略 3.Kafka的文件高效读写机制 3.1Kafka的文件结构 3.2顺序写磁盘 3.3零拷贝 3.3.1传统IO 3.3.2m…

应用层与传输层

1.应用层 很多时候这一层的协议是程序员自定义的应用层协议&#xff08;相当于一种约定&#xff0c;约定数据如何进行传输&#xff09;。 eg&#xff1a; 实现登录的场景&#xff1a; 此时前端就需要与后端约定请求&#xff08;假设约定使用ajax请求&#xff09;中的一些参…