IDEA调试总结

前言


由于 IDEA 每个人使用的版本不同以及快捷键的设置不同,所以忽略了快捷键的使用。如果不知道快捷键请在 IDEA 工具栏里面点开 Run 菜单即可知悉

图标介绍

下面咱们进入看图说话环节,下列图标小伙伴知道是啥功能么?日常开发进行 Debug 使用到哪一些呢?可能也就那一半左右吧!

1 Show Execution Point: ALT+F10

显示当前执行点,可以清晰地从图标中看出意思,红色的箭头上面执行完了,箭头下面的是将要执行的内容。那么这个有啥功能呢?从下面的动图可以看到当停留在断点的时候切换到 System 类里面,通过点击此图标即可回到当前断点停留的地方(如果记住快捷键了连鼠标都不用点了)。你是不是还在通过点击 Debugger 下的 Frames 里面的断点调用链来回到当前断点停留的地方呢?赶快使用 Show Execution Point 功能吧!

2 Step Over:F8

单步执行,如果有方法则不进入方法(除非方法里面有断点)

3 Step Into   F7

单步执行,如果有方法则进入方法(请检查你的 IDEA Debugger 里面的设置,一些包里面的方法使用 Step Into 也进不去,可以把下面的 Do not step into the classes 勾取消即可)


4 Force Step Into    ALT+SHIFT+F7

基本与 Step Into 功能相同,不同点就是可以强制进入那些 JDK 源码里面。不需要如上面的 Do not step into the classes 设置。

 5 Step Out: SHIFT+F7

跳出当前所在的方法,返回调用此方法的地方。

6 Run to Cursor: ALT+F9

执行到光标所在位置,可以跳过中间需要执行的代码。

7 Drop Frame:

丢弃当前方法,回退上一个方法。如果是 main 方法则不会激活此图标。学”废“了这个妈妈再也不用担心我一不小心错过了断点,还需要重新来啦。

8 Trace Current Stream Chain:

对当前 Stream 进行链路追踪,喜欢用 JDK 8 新特性 Stream 来编程的小伙伴可以使用这个功能,谁用谁知道!

9 Evaluate Expression: (ALT+F8)

表达式计算,Debug 功能里面最牛逼的功能,不接受反驳!一切皆可使用这个功能。

断点的分类

在Java开发中,使用IntelliJ IDEA进行调试时,可以使用多种类型的断点来帮助开发者进行调试。以下是其中一些常用的断点类型:

1. 行断点(Line Breakpoint)

在代码的某一行设置断点,当程序执行到该行时会触发断点暂停程序。

2. 条件断点(Conditional Breakpoint)

在特定条件下触发断点的暂停,开发者可以指定一个条件,当满足条件时程序会在该断点暂停。

比如上面的例子,我想定位到数据库中哪条数据有问题是负数导致了我的总数也负了

如下图,我们可以看到,断点卡在了负数分数的对象上

3. 异常断点(Exception Breakpoint)

当特定类型的异常被抛出时暂停程序,可以帮助开发者快速定位异常抛出的位置。

4. 监视断点(Watchpoint)

在属性上打上断点,用于监控属性的变化 

5. 方法断点(Method Breakpoint)

当程序执行到特定方法时暂停程序,可以用来追踪方法的调用情况。

以上是在IntelliJ IDEA中常见的几种断点类型,开发者可以根据实际调试需求选择合适的断点类型来辅助调试。

6 源断点

这个直接上需求解释,日常调试中,我想知道一个循环中的每次变量值,请问怎么办?

可以在断点的more里进行设置

7 多线程断点

在多线程的场景下,我们如果想单独调试某个线程的断点,而被其他线程影响.

我只是想调试下面的线程,而不想上面的线程执行影响我,那么我只需要打上多多线程断点即可,操作如下

 8 stream断点

用于java8+等版本的stream使用时的断点,可以充分展示每个链式操作的数据流转过程

9断点回退

用于方法级别的调试时,回退到方法的进入之前,用于手速太快,不想重启,想重新执行一次断点的场景

ps:(1.一定要是方法调用,2.引用对象不建议使用,回退后对象的内容会发生改变)

如下,我们可以看到回退后,基本数据类型sum,从2回退到了0,可以重新进入方法

高级技巧整理

临时执行表达式/修改变量的运行值

可以查看当前方法里面的变量信息,右键变量可以操作变量里面的值或者复制出来以及新建 Watch 等

调试时,可以临时执行一些表达式,参考下图:点击这二个图标中的任何1个都可以

然后回车,马上就能看到结果 

当然,如果调试时,想动态修改变量的值,也很容易,在变量上右击,然后选择Set Value,剩下的事,地球人都知道。

参考链接

【精选】玩转 IDEA Debug 功能_idea lambda 断点-CSDN博客

关于idea的八种断点调试_idea断点调试_张名佳的博客-CSDN博客

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

逐步学习 Swagger enum:从入门到精通

enum 是 Swagger 规范中用来定义枚举类型的一种方式。它允许开发者在 API 文档中明确列出该接口的参数、返回值或请求体中可接受的枚举值。通过使用 Swagger enum,开发者可以更清晰地描述 API 的输入和输出,提高 API 文档的可读性和可维护性。 enum 使用…

渗透实战靶机2wp

0x00 简介 1、测试环境 目标IP:10.xxxx 测试IP:192.168.139.128 测试环境:win10、kali等 测试时间:2021.7.22-2021.7.22 测试人员:ruanruan 2、测试过程 本次实战主要通过对收集到的端口、目录等信息进行持续整…

基于Quartz实现动态定时任务

生命无罪,健康万岁,我是laity。 我曾七次鄙视自己的灵魂: 第一次,当它本可进取时,却故作谦卑; 第二次,当它在空虚时,用爱欲来填充; 第三次,在困难和容易之…

Google Firebase PHP实现消息推送

获取key的方法: 登录谷歌开发者后台 https://console.firebase.google.com/?hlzh-cn function firebaseNotice($title,$body){$token_arr[token1,token2]; //用户的firebasetoken列表$notify_msg ["notification" > ["title" > $title…

第四节(2):修改WORD中表格数据的方案

《VBA信息获取与处理》教程(10178984)是我推出第六套教程,目前已经是第一版修订了。这套教程定位于最高级,是学完初级,中级后的教程。这部教程给大家讲解的内容有:跨应用程序信息获得、随机信息的利用、电子邮件的发送、VBA互联网…

【2023CANN训练营第二季】——Ascend C算子开发进阶—Ascend C Tiling计算

了解Tiling基本概念 在这一小节中接触到了一个新的概念,叫Tiling计算,指的是在Ascend C 算子开发过程中,矢量的算子流程分为3个基本任务:CopyIn,Compute,CopyOut。CopyIn任务负责将Global Memory上的输入T…

计算机毕业设计选题推荐-农产品销售微信小程序/安卓APP-项目实战

✨作者主页:IT研究室✨ 个人简介:曾从事计算机专业培训教学,擅长Java、Python、微信小程序、Golang、安卓Android等项目实战。接项目定制开发、代码讲解、答辩教学、文档编写、降重等。 ☑文末获取源码☑ 精彩专栏推荐⬇⬇⬇ Java项目 Python…

【狂神说Java】Dubbo + Zookeeper

✅作者简介:CSDN内容合伙人、信息安全专业在校大学生🏆 🔥系列专栏 :狂神说Java 📃新人博主 :欢迎点赞收藏关注,会回访! 💬舞台再大,你不上台,永远…

基于VPLC711的曲面外观检测XYR运动控制解决方案

市场应用背景 随着消费升级,产品形态正在朝着多样性和精细化方向迅速发展。这导致了对于复杂曲面轨迹加工的需求,包括外观检测、打磨抛光和点胶工艺控制,要求更高的精密度。企业必须主动满足市场需求,不断改进工艺,以…

从零开始开发抖音小程序:与餐饮团购的完美融合

本文将探讨如何从零开始开发一个创新的抖音小程序,以其独特的特性与餐饮团购进行完美融合。 一、什么是抖音小程序? 抖音小程序为开发者提供了在用户观看视频时进行无缝体验的机会。通过借助抖音的庞大用户基础,开发者可以将自己的创意呈现给…

k8s二进制(ETCD的部署安装)

角色ip组件k8s-master192.168.11.169kube-apiserver,kube-controller-manager,kube-scheduler,etcdk8s-node1192.168.11.164kubelet,kube-proxy,docker,etcdk8s-node2192.168.11.166kubelet,kube-proxy,docker,etcd 1、为etcd签发证书 1、证书的下载(任意机器上执行都可以) …

利用Python代码提取shp中每个区域的图像

import geopandas as gpd import rasterio from rasterio.mask import mask import matplotlib.pyplot as plt import numpy as np# 载入shp文件 - 它只包含几何对象 shapefile_path rD:\Desktop\新建文件夹 (3)\01.shp shapes gpd.read_file(shapefile_path)# 打开图像 imag…

WebSocket魔法师:打造实时应用的无限可能

1、背景 在开发一些前端页面的时候,总是能接收到这样的需求:如何保持页面并实现自动更新数据呢?以往的常规做法,是前端使用定时轮询后端接口,获取响应后重新渲染前端页面,这种做法虽然能达到类似的效果&…

开源DB-GPT实现连接数据库详细步骤

官方文档:欢迎来到DB-GPT中文文档 — DB-GPT 👏👏 0.4.1 第一步:安装Minicoda https://docs.conda.io/en/latest/miniconda.html 第二步:安装Git Git - Downloading Package 第三步:安装embedding 模型到…

Python爬虫——入门爬取网页数据

目录 前言 一、Python爬虫入门 二、使用代理IP 三、反爬虫技术 1. 间隔时间 2. 随机UA 3. 使用Cookies 四、总结 前言 本文介绍Python爬虫入门教程,主要讲解如何使用Python爬取网页数据,包括基本的网页数据抓取、使用代理IP和反爬虫技术。 一、…

Javaweb之javascript的BOM对象的详细解析

1.5.2 BOM对象 接下来我们学习BOM对象,BOM的全称是Browser Object Model,翻译过来是浏览器对象模型。也就是JavaScript将浏览器的各个组成部分封装成了对象。我们要操作浏览器的部分功能,可以通过操作BOM对象的相关属性或者函数来完成。例如&#xff1a…

Cordova插件开发三:通过广播实现应用间跨进程通信

文章目录 1.最终效果预览2.数据发送3.插件接受数据4.JS页面中点击获取数据返回1.最终效果预览 场景说明:我们给自来水公司开发了一个h5应用,需要对接第三方厂家支持硬件设备以便于获取到高精度定位数据,之前几篇文件写过,我已经集成过南方测绘RTK和高精度定位模块的设备,厂…

百度智能云正式上线Python SDK版本并全面开源!

文章目录 1. SDK的优势2. 千帆SDK:快速落地LLM应用3. 如何快速上手千帆SDK3.1 SDK快速启动3.2 SDK进阶指引3.3 通过Langchain接入千帆SDK 4. 开源社区 百度智能云千帆大模型平台再次升级!在原有API基础上,百度智能云正式上线Python SDK&#…

Easyui DataGrid combobox联动下拉框内容

发票信息下拉框联动,更具不同的发票类型,显示不同的税率 专票 普票 下拉框选择事件 function onSelectType(rec){//选中值if (rec2){//普通发票对应税率pmsPlanList.pmsInvoiceTaxRatepmsPlanList.pmsInvoiceTaxRateT}else {//专用发票对应税率pmsPlan…

改进YOLOv8:结合ICCV2023|动态蛇形卷积,构建不规则目标识别网络

🔥🔥🔥 提升多尺度、不规则目标检测,创新提升 🔥🔥🔥 🔥🔥🔥 捕捉图像特征和处理复杂图像特征 🔥🔥🔥 👉👉👉: 本专栏包含大量的新设计的创新想法,包含详细的代码和说明,具备有效的创新组合,可以有效应用到改进创新当中 👉👉👉: �…