Eclipse中的实用工具之Debug

news2024/9/24 21:21:13

🥳🥳Welcome Huihui's Code World ! !🥳🥳

接下来看看由辉辉所写的关于Debug的相关操作吧

目录

🥳🥳Welcome Huihui's Code World ! !🥳🥳

一.什么是Debug

二.为什么要使用Debug

三.怎么使用Debug

步骤

1.打开您要调试的Java项目

2.增加断点

3.启动调试器

4.看程序的执行状态、变量的值、函数调用堆栈

5.进行所需操作

6.停止调试器

四.执行"Inspect"操作

五.debug的工具栏详解

六.断点有哪些类型 

七.怎么删除debug中的断点

八. Debug中的颜色通常表示的意思


一.什么是Debug

  • Debug是指在软件开发过程中使用调试器(Debugger)来排查和修复错误或异常的过程
    • 【调试(Debugging)是一种通过逐步执行程序代码、观察程序状态、变量值和执行路径,以及分析程序的行为来诊断和解决问题的技术】
  • 调试器是一种开发工具,可以在编程语言的执行过程中暂停程序,并允许开发者检查程序的内部状态,例如变量的值、对象的属性、函数的调用栈等。
  • 通过使用调试器,开发者可以逐行或逐步执行代码,并观察每个步骤的结果,以便发现和修复潜在的错误或异常
    • 调试通常包括以下操作:
      • 1. 设置断点:在程序中标记位置,使得程序执行到该处时暂停
      • 2. 单步执行:逐行或逐步执行代码,观察每一步的执行结果
      • 3. 监视变量:查看和跟踪变量的值,在程序执行过程中监测其变化
      • 4. 查看调用栈:查看当前执行路径上的函数调用关系,以了解程序的执行流
      • 5. 检查异常:捕获和跟踪异常的发生,以便定位问题的根源
      • 6. 输出日志:在程序中插入日志语句,输出特定的状态和信息

二.为什么要使用Debug

  • 1. 错误排查:调试是用于定位和修复程序中的错误和异常的关键工具。通过逐步执行代码并观察程序状态和变量值,开发者可以找到具体的错误发生位置,从而精确定位问题并进行修复
  • 2. 代码理解:调试允许开发者逐行或逐步执行代码并观察代码的执行流程。这有助于开发者深入了解代码的执行路径、条件判断和变量赋值等细节,从而更好地理解代码逻辑,提高代码质量
  • 3. 测试边界条件:调试可以帮助开发者检查代码在不同输入和环境下的行为。通过设置断点和观察变量值,开发者可以测试代码在特定边界条件下的响应,以确保代码在各种情况下都能正常运行
  • 4. 性能优化:通过调试工具,开发者可以监视代码的执行时间、资源占用以及函数调用栈等信息。这些信息可以帮助开发者发现代码的性能问题,并进行优化,以提高程序的执行效率和响应速度
  • 5. 学习和教学:调试是学习编程的重要方法之一。通过调试现有代码或他人的代码,可以帮助开发者理解不熟悉的代码逻辑,从而提升编程技能。此外,调试工具还可以用于教学,帮助新手程序员理解代码执行过程和调试技巧

⭐⭐总之就是我们在执行代码的时候,常会有错误,那么这个时候我们需要去解决这个错误,可是我们也不能够马上就知道问题出现在哪里,而使用Debug可以让我们逐行的逐步的去测试和调试代码,以快速找出问题,从而解决问题

三.怎么使用Debug

步骤

  • 1.打开您要调试的Java项目

  • 2.增加断点

  • 3.启动调试器

  • 4.看程序的执行状态、变量的值、函数调用堆栈

  • 5.进行所需操作

  • 6.停止调试器

        👇👇

  • 1. 在Eclipse中打开您要调试的Java项目,或打开要调试的Java文件
  • 2. 在要调试的代码行左侧单击增加断点 【这可以通过单击行号区域完成,在该区域中将显示一个小蓝点,表明您已设置了一个断点。也可以通过右键单击代码编辑器中的行,然后从菜单中选择断点(或使用快捷键Ctrl+Shift+B)】
  • 3. 单击工具栏中的“Debug”按钮或使用快捷键“F11”启动调试器
  • 4. 程序应该现在开始运行,直到它到达第一个断点。此时调试器会暂停程序的执行,您可以开始探究执行状态
  • 5. 在调试器控制台中可以看到程序的执行状态、变量的值、函数调用堆栈
  • 6. 可以单步执行程序,使其逐行执行,以便更好地了解程序的执行流程
  • 7. 在程序暂停执行时,您可以检查所有变量的当前值。您还可以修改变量的值,以便在程序继续运行时产生不同的结果
  • 8. 在调试器工具栏中,可以使用“Resume”按钮(或快捷键“F8”)继续程序的执行
  • 9. 如果您希望停止调试器,则可以使用工具栏中的“Terminate”按钮

四.执行"Inspect"操作

在Eclipse中,执行"Inspect"操作可以查看当前选中的变量的值。如果您在断点处添加了断点并且程序暂停在该断点处,则可以使用"Inspect"操作来检查断点处的变量的值。

以下是如何使用"Inspect"操作:

  1. 在Eclipse中启动并暂停您的程序
  2. 选中断点处要检查的变量

  3. 右键单击选择“Inspect”(或使用快捷键Shift+Ctrl+I)
  4. 在打开的窗口中,您将看到选中变量的当前值

"Inspect"操作能够在调试过程中更好地了解当前状态。它可以帮助您快速检查变量的值,排除潜在的调试问题,同时也是一个非常快捷的调试方式

五.debug的工具栏详解

  • 1. Debug:启动调试器,进入单步调试模式,代码将从第一个断点开始执行。快捷键:F11
  • 2. Resume:继续程序的执行,直到下一个断点或程序结束。快捷键:F8
  • 3. Terminate:停止程序执行,退出调试模式。快捷键:Ctrl+F2
  • 4. Step Over:单步执行当前行,如果当前行有函数调用,则将进入函数并在函数返回后恢复执行。快捷键:F6
  • 5. Step Into:单步执行当前行,如果当前行有函数调用,则将进入函数并停在函数的第一行以供单步调试。快捷键:F5
  • 6. Step Return:从当前函数返回并停在调用当前函数的行。快捷键:F7
  • 7. Toggle Breakpoint:在当前行设置断点或删除断点。快捷键:Ctrl+Shift+B
  • 8. Drop to Frame:在当前调用堆栈帧中,重新执行当前帧并回到该帧。快捷键:Ctrl+Shift+D
  • 9. Display:将表达式添加到表达式查看器中以便在调试时监视表达式的值。快捷键:Ctrl+Shift+I
  • 10. Variables:显示当前在调试过程中可用的变量及其值,您可以修改变量的值。快捷键:Ctrl+Shift+D
  • 11. Breakpoints:显示当前已设置的断点列表,您可以添加、删除或禁用断点。快捷键:Ctrl+Shift+B
  • 12. Expressions:显示已添加到表达式查看器的表达式列表。快捷键:Ctrl+Shift+I

六.断点有哪些类型 

  • 1. 行断点(Line Breakpoint):在特定代码行处设置断点,当程序执行到该行时会暂停。设置行断点的方式是在代码编辑器的左侧边栏单击代码行号旁边的空白处
  • 2. 条件断点(Conditional Breakpoint):与行断点类似,但可以附加一个条件,只有当条件满足时才会触发断点。在设置行断点后,右键点击断点并选择"Edit Breakpoint",然后在对话框中添加条件
  • 3. 异常断点(Exception Breakpoint):在异常抛出时触发断点。可以设置特定的异常类型,让程序在抛出该异常时暂停。在Debug视图中,选择"Breakpoints"选项卡,然后右键点击空白处,选择"Add Java Exception Breakpoint"并设置异常类型
  • 4. 方法断点(Method Breakpoint):在特定方法进入或退出时触发断点。在Debug视图中,选择"Breakpoints"选项卡,然后右键点击空白处,选择"Add Java Method Breakpoint"并指定要监听的方法
  • 5. 观察点(Watchpoint):监视特定变量的值,一旦该变量的值发生变化就会触发断点。在Debug视图的"Expressions"窗口中,右键点击空白处,选择"Add Watch Expression"并输入要监视的变量名

⭐⭐总之,精确使用不同类型的断点,可以是开发的效率大大提高!!

⭐⭐注意:使用完断点之后应当删除或禁用不再需要的断点,以免影响程序的正常执行

七.怎么删除debug中的断点

  • 1. 使用键盘快捷键删除断点:
    •    - 单击要删除的断点所在的代码行,然后按下快捷键 Ctrl + Shift + B,断点将被删除
  • 2. 在 Debug 视图中删除断点:
    •    - 打开 Eclipse 的 Debug 视图。如果你无法找到 Debug 视图,请检查是否已打开
    •    - 在 Debug 视图中,找到要删除的断点,可以通过 Breakpoints 或者 Debug 视图的其他选项卡来查找
    •    - 右键单击要删除的断点,然后选择 "Remove Breakpoint"(删除断点)或 "Delete"(删除)
  • 3. 在 Breakpoints 视图中删除断点:
    •    - 打开 Eclipse 的 Breakpoints 视图。你可以通过选择 "Window" 菜单中的 "Show View" > "Other" 来打开 Breakpoints 视图
    •    - 在 Breakpoints 视图中,展开断点列表,找到要删除的断点
    •    - 右键单击要删除的断点,然后选择 "Delete"(删除)或 "Remove Breakpoint"(删除断点)

⭐⭐确保在删除断点之前,调试会话已经停止,否则断点将仍然存在并生效

⭐⭐具体的操作步骤可能因为不同的 Eclipse 版本或设置而有所不同

八. Debug中的颜色通常表示的意思

  • 1. 黑色:表示未执行的代码
  • 2. 灰色:表示已经执行但跳过的代码
  • 3. 蓝色:表示当前正在运行的代码
  • 4. 绿色:表示断点
  • 5. 红色:表示程序出现异常,或者正在暂停执行状态

此外,在变量窗口中,变量名和变量值以不同的颜色区分,例如:

  • 1. 蓝色变量名:表示该变量是一个类或接口
  • 2. 黑色变量名:普通变量
  • 3. 灰色字体:表示该变量不存在于代码范围内

以上是Eclipse调试器(Debugger)中常见颜色的含义,通过颜色方便地识别代码执行状态,以及更好的理解和调试程序

               好啦,今天的分享就到这了,希望能够帮到你呢!😊😊               

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

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

相关文章

springboot+element-ui多文件一次上传

前端&#xff1a; <el-uploaddrag:multiple"true":limit"10":auto-upload"false":file-list"fileList"ref"fileUpload"><i class"el-icon-upload"></i><div class"el-upload__text&quo…

【云原生】Pause 容器介绍

Pause 容器 Pause 容器&#xff0c;又叫 Infra 容器 我们知道在 kubelet 的配置中有这样一个参数&#xff1a; KUBELET_POD_INFRA_CONTAINER--pod-infra-container-imageregistry.access.redhat.com/rhel7/pod-infrastructure:latest上面是 openshift 中的配置参数&#xff…

关于Java类加问题我竟让面试官哑口无言

学习类加载之前我们先看看从面试官的角度会问哪些问题&#xff1f;毕竟带着问题学习会比较高效。 直击面试 看你简历写得熟悉 JVM&#xff0c;那你说说类的加载过程吧&#xff1f; 我们可以自定义一个 String 类来使用吗&#xff1f; 什么是类加载器&#xff0c;类加载器有哪些…

雨水情自动监测报警系统解决方案

随着夏季雨季的到来&#xff0c;对全国各地的防汛工作形成挑战&#xff0c;为了实现有效的雨水管理和应对极端天气情况&#xff0c;建立一套科学高效的雨水情监测系统有着重要作用。雨水情监测系统能够提供及时准确的雨水信息&#xff0c;帮助决策者进行全面的天气分析和预警&a…

数字化转型排头兵,金融行业如何利用科技赋能业务 | TVP金融交流会

引言 金融行业&#xff0c;是数字化转型浪潮中的排头兵。这个上千年来&#xff0c;不断创新的行业&#xff0c;从以物易物到纸币发行再到数字资产&#xff0c;承袭至今的是保障客户资产安全&#xff0c;提升资产流通效率的本心。进入产业互联网时代以后&#xff0c;金融科技的发…

第5讲:使用ajax技术实现局部刷新功能(xml数据)

使用ajax技术实现局部刷新功能&#xff0c;每2秒刷新一次数据&#xff0c;本案例使用原生态xmlhttprequest对象&#xff0c;GET方法通讯&#xff0c;使用responseXML属性返回xml格式数据&#xff0c;同时刷新界面数据。 ajax封装库(ajax.js) var xmlhttpnull; //创建XMLHttpRe…

adb-学会查看日志文件

目录 一、获取日志文件 二、日志级别 三、日志缓冲区 四、缓冲区的类型 &#x1f381;更多干货 完整版文档下载方式&#xff1a; 一、获取日志文件 一般情况下&#xff0c;我们在做app测试时&#xff0c;其实并不需要经常使用adb去抓取我们的日志&#xff0c;通常情况下…

使用GPIO来模拟UART

前言 最近在看一些秋招的笔试和面试题&#xff0c;刚好看到一个老哥的经验贴&#xff0c;他面试的时候被问到了如果芯片串口资源不够了该怎么办&#xff1f;其实可以用IO口来模拟串口&#xff0c;但我之前也没有具体用代码实现过&#xff0c;借此机会用32开发板上的两个IO口来…

力扣 404. 左叶子之和

题目来源&#xff1a;https://leetcode.cn/problems/sum-of-left-leaves/description/ C题解1&#xff1a;递归法&#xff0c;前序遍历。 1. 确定输入参数&#xff1a;当前节点&#xff0c;左叶子的和&#xff1b; 2. 确定终止条件&#xff1a;空节点时返回&#xff1b; 3. …

【每日一短语】在必要情况下

1、短语及释义 in a pinch 释义&#xff1a; 在紧要关头&#xff1b;在必要情况下 2、示例及出处 美剧&#xff1a;《生活大爆炸》第七季第21集 The Big Bang Theory, Season 7 Episode 21 Sheldon Cooper: Penny, there’s only one cookie with something in the middle tha…

基于STM32设计的城市绿化云端监控系统(华为云IOT)

一、设计需求 1.1 项目背景 随着科技的蓬勃发展改变了很多传统行业的作业方式,当我们用移动支付代替现金交易时,当我们足不出户就能满足饥饿的身体时,我们的生活方式因为科技而发生了改变;同样科技也在改变着我们周围的点点滴滴,城市绿化养护亦是如此。 通过智慧控制系统…

在Docker中使用MindSpore GPU版本

文章目录 在Docker中使用MindSpore GPU版本获取安装命令安装安装nvidia-container-toolkit获取MindSpore镜像测试运行MindSpore镜像运行代码 使用VSCode开发 在Docker中使用MindSpore GPU版本 参考官方文档&#xff1a;安装指南 获取安装命令 如图所示 命令为 docker pull…

MFC将二维数组写入文件中并进行读取

MFC将二维数组写入文件中并进行读取 当前项目需要将二维数组写入到本地文件中&#xff0c;并在另一个对话框中进行读取。网上查了很多资料&#xff0c;基本都是写字符串到文件中的&#xff0c;想依葫芦画瓢仿照字符串的写法来写二维数组&#xff0c;发现在写文件状态下&#x…

护网是什么?为什么【网安人】都想参加!

一、什么是护网行动&#xff1f; 护网行动是以公安部牵头的&#xff0c;用以评估企事业单位的网络安全的活动。 具体实践中。公安部会组织攻防两方&#xff0c;进攻方会在一个月内对防守方发动网络攻击&#xff0c;检测出防守方&#xff08;企事业单位&#xff09;存在的安全漏…

Flink之FileSink将数据写入parquet文件

Flink之FileSink将数据写入parquet文件 在使用FileSink将数据写入列式存储文件中时必须使用forBulkFormat,列式存储文件如ORCFile、ParquetFile,这里就以ParquetFile为例结合代码进行说明. 在Flink1.15.3中是通过构造ParquetWriterFactory然后调用forBulkFormat方法将构造好的…

第9章 异常处理

第9章 异常处理 9.1 Java异常处理 try-catch-finally ​ ​ 9.2 Scala异常处理 ​ ​ package chapter09object Test01_Exception {def main(args: Array[String]): Unit {try {val n 10 / 1} catch {case e: ArithmeticException > {println("发生算数异常&quo…

【Java高级编程】Java常用类

Java常用类 1、字符串相关的类1.1、字符串相关的类&#xff1a;String1.2、字符串相关的类&#xff1a;String常用方法1.3、String与基本数据类型、包装类之间的转换1.4、String与char[]之间的转换1.5、String与byte[]之间的转换1.6、String、StringBuffer、StringBuilder三者的…

element-plus中的el-table如何动态合并行(复制粘贴即可使用 亲测有效!)

demo场景&#xff1a; 一个 table&#xff0c;由5列组成&#xff0c;其 prop 分别为’resource_name’, ‘scene_name’, ‘type’, ‘content’, ‘desc’&#xff0c;渲染 table 的数据来源于接口。现在需要将 propdesc的这一列&#xff0c;按照resource_name 相等时进行合并…

使用EVPN构建二层VPN

一、业务背景 EVPN实例用于将EVPN路由与公网路由隔离。不同EVPN实例的路由之间也是相互隔离的。在所有EVPN组网方案中,都需要配置EVPN实例。 二、业务拓扑 三、配置步骤 1、配置基本接口IP 2、配置核心网IGP和LDP 3、配置PE和PE之间的BGP EVPN邻居关系 4、配置EVPN的源地址 …

Linux5.10 NoSQL 之 Redis配置与优化及数据类型

文章目录 计算机系统5G云计算第四章 LINUX NOSQL 之 Redis配置与优化及数据类型一、关系数据库与非关系型数据库1.关系型数据库2.非关系型数据库3.关系型数据库和非关系型数据库区别4.非关系型数据库产生背景5.总结 二、Redis简介1.Redis 具有以下几个优点2.使用场景3.哪些数据…