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

idea dubge 详细

目录

一、概述

二、debug操作分析

1、打断点

2、运行debug模式

3、重新执行debug

4、让程序执行到下一次断点后暂停

5、让断点处的代码再加一行代码

6、停止debug程序

7、显示所有断点

8、添加断点运行的条件

9、屏蔽所有断点

10、把光标移到当前程序运行位置

11、单步跳过

12、可以跳入方法内部的执行一行代码操作

13、跳出方法

14、直接执行到光标所在位置

15、在控制台改变正在debug的数据


一、概述

  • debug调试也叫断点调试
  • 在程序的某一行打上断点,则在debug模式下运行到断点位置时会暂停,便于程序员观察代码的执行情况
  • 学会debug,有助于在程序运行未达到理想情况时,对程序的各个流程进行分析
  • 本文只详细描述了debug的一些基本的常用操作,如果有缺漏欢迎评论区留言~

二、debug操作分析

1、打断点

  • 在程序的某一行位置,数字右边的空白部分使用鼠标左键点击一下,出现红点即为打上了一个断点

2、运行debug模式

  • 方式一
    • 选中要进行debug的程序,点击右上角的debug按钮

  •  方式二
    • 在要进行debug的程序处右键,选中下图选项

3、重新执行debug

  • 点击下图按钮,会关闭当前debug的程序并重新启动debug

4、让程序执行到下一次断点后暂停

  • 点击下图的按钮,debug会继续运行程序,直到遇到下一次断点后暂停

  •  举例
    • 下图是一个循环操作,在打断点的位置点击上面说的按钮,相当于再循环一次,到代码第9行时停止

5、让断点处的代码再加一行代码

  • 点击下图的加号,可以在断点处加一行代码,比如下图中的count++即为新添加的代码
    • 选中count++,右键点击Edit可以编辑该代码
    • 选中该行代码(count++),点击加号下面的减号,可以删除该行代码

  • 选中下图的眼镜,变为分屏操作


举例

  • 下图是没添加额外代码之前的截图

  •  添加一句count++,并点击左边红色框中的按钮,执行到下一次断点,即循环了一次

  •  效果和运行步骤见下图 

6、停止debug程序

  • 点击下图按钮停止debug程序
  • 注意
    • 运行的如果是javaSE项目,点一下就停止
    • 运行的如果是javaWeb项目,需要点两下
      • 第一下停止代码的当前线程
      • 第二下停止服务器

7、显示所有断点

  • 点击下图按钮,会显示所有断点

  •  点击后出现下图所示界面,可以添加断点运行的条件,见下一条功能解释

8、添加断点运行的条件

  • 选中断点,右键后即可编辑断点运行的条件
    • 满足条件时程序才会在该断点处停下

  •  比如添加i>=5,重新debug后的效果如下图所示

  •  此时会发现第7条显示所有断点信息处,可以看到下图效果

9、屏蔽所有断点

  • 点击下图按钮,可以屏蔽所有断点

  • 屏蔽前
  • 屏蔽后
  •  屏蔽的断点在debug的时候不会运行
    • 如果程序调试后觉得没问题了,可以屏蔽掉所有断点继续运行程序查看效果

10、把光标移到当前程序运行位置

  • 点击下图按钮后,会把鼠标光标移动到当前程序运行位置
    • 当程序代码量很大的时候,可以通过该按钮快速定位到程序运行位置

  •  如下图所示
    • 假设程序运行到第9行断点处,鼠标光标在第11行,点击该按钮后光标就会移动到第9行

11、单步跳过

  • 点击下图按钮,会一行一行执行自己编写的代码
    • 如果碰到方法,该按钮不会进入到该方法内部
    • 快捷键F8 

12、可以跳入方法内部的执行一行代码操作

  • 下图中的蓝色箭头和红色箭头都可以执行一行代码,如果遇到方法时会进入方法内部,区别在于
    • 蓝色箭头只会跳进自己写的方法,如果是系统已经写好的方法,蓝色箭头无法跳入该方法
    • 红色箭头不管是自己写的方法,还是系统已经定义好的方法,都可以跳入方法内部

  •  如下图所示
    • ArrayList的add方法是系统已经写好的,蓝色箭头无法跳入方法内部,但是红色箭头可以跳入方法内部
    • printMessage()是自定义方法,红色和蓝色箭头都可以跳入该方法内部

13、跳出方法

  • 下图的两个按钮都可以跳出方法
    • 第二个按钮是关闭窗口的意思,同样可以起到跳出方法的作用
    • 在进入方法内部的时候使用这两个按钮

14、直接执行到光标所在位置

  • 点击下图的按钮,程序会执行到光标所在的位置
    • 前提是光标前面没有断点,否则程序还是会在光标前面的断点处暂停

15、在控制台改变正在debug的数据

  • 在控制台选中某个变量,右键点击Set Value可以改变该变量的值
    • 如果想测试某个地方的数据如果是正确的会是什么效果,可以手动更改该处变量的值

补充:debug调试看代码时,一般用F9跳到下一个断点,打断点的目的是你想看程序执行到这个位置时会有什么效果,或者是到达断点的位置后再继续往下看实现的过程;用F7去跳进方法内部,看具体的实现细节;用F8去看当前位置代码往下的执行情况(不跳入具体方法的内部)

相关文章:

idea dubge 详细

目录 一、概述 二、debug操作分析 1、打断点 2、运行debug模式 3、重新执行debug 4、让程序执行到下一次断点后暂停 5、让断点处的代码再加一行代码 6、停止debug程序 7、显示所有断点 8、添加断点运行的条件 9、屏蔽所有断点 10、把光标移到当前程序运行位置 11、单步跳过 12、…...

短视频矩阵系统/pc、小程序版独立原发源码开发搭建上线

短视频剪辑矩阵系统开发源码----源头搭建 矩阵系统源码主要有三种框架:Spring、Struts和Hibernate。Spring框架是一个全栈式的Java应用程序开发框架,提供了IOC容器、AOP、事务管理等功能。Struts框架是一个MVC架构的Web应用程序框架,用于将数…...

Linux不同格式的文件怎么压缩和解压

Linux不同格式的文件怎么压缩和解压 tar介绍不同格式文件压缩和解压 tar介绍 tar(tape archive)是一个在Unix和类Unix操作系统中用于文件打包和归档的命令行工具。它通常与其他工具(例如gzip、bzip2、xz)一起使用来创建归档文件并…...

Java 领域模型之失血、贫血、充血、胀血模型

1.失血模型 失血模型仅仅包含数据的定义和getter/setter方法,业务逻辑和应用逻辑都放到服务层中。这种类在Java中叫POJO。 action service: 核心业务(复杂度:重) model:简单Set Get dao :数据持…...

ifndef是什么,如何使用?

引言 使用HbuilderX uni-ui模板创建的uni-app项目,main.js文件中看到有如下的注释: // #ifndef VUE3 ...... // #endif // #ifdef VUE3 ...... // #endif 相信很多没有uini-app项目开发经验的朋友,初次接触uni-app项目,可…...

PXIE板卡,4口QSFP+,PCIE GEN3 X8,XILINX FPGA XCVU3P设计

PXIE板卡,4口QSFP,PCIE GEN3 X8,基于XILINX FPGA XCVU3P设计。 1:电路拓扑 ● 支持利用 EEPROM 存储数据; ● 电源时序控制和总功耗监控; 2:电路调试 3:测试 PCIE gen3 x8&#…...

数据分析:密度图

目前拥有的数据如图,三列分别对应瑕疵种类,对应的置信 度,x方向坐标。 现在想要做的事是观看瑕疵种类和置信度之间的关系。 要显示数据分布的集中程度,可以使用以下几种常见的图形来观察: 1、箱线图(Box P…...

docker load and build过程的一些步骤理解

docker load 命令执行原理 “docker load” command, the following steps are followed to load an image from a specified tar file to the local image repository: Parsing the tar file: Docker first parses the tar file to check its integrity and verify the form…...

批量处理图像模板

以下是一个Python模板,用于批量处理图像并将处理后的图像保存在另一个文件夹中。在此示例中,将使用Pillow库来处理图像,可以使用其他图像处理库,根据需要进行修改。   首先,确保已经安装了Pillow库,可以使…...

2023_Spark_实验十四:SparkSQL入门操作

1、将emp.csv、dept.csv文件上传到分布式环境,再用 hdfs dfs -put dept.csv /input/ hdfs dfs -put emp.csv /input/ 将本地文件put到hdfs文件系统的input目录下 2、或者调用本地文件也可以。区别:sc.textFile("file:///D:\\temp\\emp.csv&qu…...

如何将几个模型合并成一个

1、什么时候需要合并模型? 组装和装配:当你需要将多个零件或组件组装成一个整体时,可以合并它们成为一个模型。例如,在制造业中,当需要设计和展示一个完整的机械装置或产品时,可以将各个零部件合并成一个模…...

异常气体识别与飘移

Olfactory Target/Background Odor Detection via Self-expression Model 解决非目标气体检测 摘要:提出了SeELM模型(自表达ELM模型) 分为两步:1.对获得的数据集进行建模,计算出自我表达系数矩阵,2.对于异…...

分类预测 | Matlab实现WOA-BiLSTM鲸鱼算法优化双向长短期记忆神经网络的数据多输入分类预测

分类预测 | Matlab实现WOA-BiLSTM鲸鱼算法优化双向长短期记忆神经网络的数据多输入分类预测 目录 分类预测 | Matlab实现WOA-BiLSTM鲸鱼算法优化双向长短期记忆神经网络的数据多输入分类预测分类效果基本描述程序设计参考资料 分类效果 基本描述 1.Matlab实现WOA-BiLSTM鲸鱼算法…...

35 机器学习(三):混淆矩阵|朴素贝叶斯|决策树|随机森林

文章目录 分类模型的评估混淆矩阵精确率和召回率 接口介绍其他的补充 朴素贝叶斯基础原理介绍拉普拉斯平滑下面给出应用的例子朴素贝叶斯的思辨 决策树基础使用基本原理信息熵信息增益信息增益率Gini指数 剪枝api介绍 随机森林------集成学习初识基本使用api介绍 分类模型的评估…...

ImportError: urllib3 v2.0 only supports OpenSSL 1.1.1+

该错误提示表示您的 OpenSSL 版本过低,无法兼容 urllib3 v2.0。 解决此问题的方法是升级您的 OpenSSL 版本至 1.1.1 或以上。具体操作如下: 方法一: 检查您的 OpenSSL 版本,使用以下命令: openssl version 如果您的…...

webrtc gcc算法(1)

老的webrtc gcc算法,大概流程: 这两个拥塞控制算法分别是在发送端和接收端实现的, 接收端的拥塞控制算法所计算出的估计带宽, 会通过RTCP的remb反馈到发送端, 发送端综合两个控制算法的结果得到一个最终的发送码率,并以…...

2022年亚太杯APMCM数学建模大赛C题全球变暖与否全过程文档及程序

2022年亚太杯APMCM数学建模大赛 C题 全球变暖与否 原题再现: 加拿大的49.6C创造了地球北纬50以上地区的气温新纪录,一周内数百人死于高温;美国加利福尼亚州死亡谷是54.4C,这是有史以来地球上记录的最高温度;科威特53…...

苹果开发者 Xcode发布TestFlight全流程

打包前注意事项 使用Xcode导出安装包之前,必须先确认账户的所有合约是否全部同意,如果有不同意的,在出包的时候会弹出报错 这是什么意思 这意味着您有一些需要在应用商店连接上验证的协议(protocol)/契约(Contract)。解决方案 连接到应用商店…...

Spring Security—Servlet 应用架构

目录 一、Filter(过滤器)回顾 二、DelegatingFilterProxy 三、FilterChainProxy 四、SecurityFilterChain 五、Security Filter 六、打印出 Security Filter 七、添加自定义 Filter 到 Filter Chain 八、处理 Security 异常 九、保存认证之间的…...

排序优化:如何实现一个通用的、高性能的排序函数?

文章来源于极客时间前google工程师−王争专栏。 几乎所有的编程语言都会提供排序函数,比如java中的Collections.sort()。在平时的开发中,我们都是直接使用,这些排序函数是如何实现的?底层都利用了哪种排序算法呢? 问题…...

从零实现富文本编辑器#5-编辑器选区模型的状态结构表达

先前我们总结了浏览器选区模型的交互策略,并且实现了基本的选区操作,还调研了自绘选区的实现。那么相对的,我们还需要设计编辑器的选区表达,也可以称为模型选区。编辑器中应用变更时的操作范围,就是以模型选区为基准来…...

蓝牙 BLE 扫描面试题大全(2):进阶面试题与实战演练

前文覆盖了 BLE 扫描的基础概念与经典问题蓝牙 BLE 扫描面试题大全(1):从基础到实战的深度解析-CSDN博客,但实际面试中,企业更关注候选人对复杂场景的应对能力(如多设备并发扫描、低功耗与高发现率的平衡)和前沿技术的…...

工程地质软件市场:发展现状、趋势与策略建议

一、引言 在工程建设领域,准确把握地质条件是确保项目顺利推进和安全运营的关键。工程地质软件作为处理、分析、模拟和展示工程地质数据的重要工具,正发挥着日益重要的作用。它凭借强大的数据处理能力、三维建模功能、空间分析工具和可视化展示手段&…...

Module Federation 和 Native Federation 的比较

前言 Module Federation 是 Webpack 5 引入的微前端架构方案,允许不同独立构建的应用在运行时动态共享模块。 Native Federation 是 Angular 官方基于 Module Federation 理念实现的专为 Angular 优化的微前端方案。 概念解析 Module Federation (模块联邦) Modul…...

工业自动化时代的精准装配革新:迁移科技3D视觉系统如何重塑机器人定位装配

AI3D视觉的工业赋能者 迁移科技成立于2017年,作为行业领先的3D工业相机及视觉系统供应商,累计完成数亿元融资。其核心技术覆盖硬件设计、算法优化及软件集成,通过稳定、易用、高回报的AI3D视觉系统,为汽车、新能源、金属制造等行…...

select、poll、epoll 与 Reactor 模式

在高并发网络编程领域,高效处理大量连接和 I/O 事件是系统性能的关键。select、poll、epoll 作为 I/O 多路复用技术的代表,以及基于它们实现的 Reactor 模式,为开发者提供了强大的工具。本文将深入探讨这些技术的底层原理、优缺点。​ 一、I…...

AI书签管理工具开发全记录(十九):嵌入资源处理

1.前言 📝 在上一篇文章中,我们完成了书签的导入导出功能。本篇文章我们研究如何处理嵌入资源,方便后续将资源打包到一个可执行文件中。 2.embed介绍 🎯 Go 1.16 引入了革命性的 embed 包,彻底改变了静态资源管理的…...

安宝特方案丨船舶智造的“AR+AI+作业标准化管理解决方案”(装配)

船舶制造装配管理现状:装配工作依赖人工经验,装配工人凭借长期实践积累的操作技巧完成零部件组装。企业通常制定了装配作业指导书,但在实际执行中,工人对指导书的理解和遵循程度参差不齐。 船舶装配过程中的挑战与需求 挑战 (1…...

视频行为标注工具BehaviLabel(源码+使用介绍+Windows.Exe版本)

前言: 最近在做行为检测相关的模型,用的是时空图卷积网络(STGCN),但原有kinetic-400数据集数据质量较低,需要进行细粒度的标注,同时粗略搜了下已有开源工具基本都集中于图像分割这块&#xff0c…...

20个超级好用的 CSS 动画库

分享 20 个最佳 CSS 动画库。 它们中的大多数将生成纯 CSS 代码,而不需要任何外部库。 1.Animate.css 一个开箱即用型的跨浏览器动画库,可供你在项目中使用。 2.Magic Animations CSS3 一组简单的动画,可以包含在你的网页或应用项目中。 3.An…...