IDEA-DeBug理论与实践

news2024/11/17 17:36:27

文章目录

        • 01_Debug简介和意义
        • 02_IDEA中的Debug步骤
        • 03_跳转到当前代码执行的行
        • 04_步过调试的使用
        • 05_步入调试的使用
        • 06_强制步入调试的使用
        • 07_步出调试的使用
        • 08_回退断点调试的使用
        • 09_运行到光标处
        • 10_计算表达式
        • 11_条件断点
        • 12_多线程调试


在这里插入图片描述

在这里插入图片描述


在软件开发中,IDEA(IntelliJ IDEA)是一种常用的集成开发环境,而DeBug则是调试功能的一部分。IDEA-DeBug的意义在于帮助开发人员在编写和测试程序时发现和修复 bug(错误)。

通过使用IDEA的调试功能,开发人员可以逐行执行代码、观察变量的值以及程序执行流程,从而更容易地找到程序中的问题所在。Debug功能可以帮助开发人员定位代码中的错误,解决程序运行时出现的异常行为,提高代码的质量和稳定性。同时,Debug也可以帮助开发人员更好地理解代码的执行过程,加深对程序行为的理解。

IDEA-DeBug的意义在于提供了强大的调试工具,帮助开发人员更高效地进行程序调试和错误修复,从而提高代码的质量和开发效率。


01_Debug简介和意义
  • 什么是程序DeBug?
    • Debug,是程序开发人员必会的一项调试程序的技能。
    • 企业中程序开发和程序调试的比例为1:1.5,可以说如果你不会调试程序,你就没有办法从事编程工作。
  • Debug能帮助我们做什么?
    1. 追踪代码的运行流程。
    2. 程序运行异常定位。
    3. 线上问题追踪。
  • Debug对于程序学习者的意义
    1. 通过调试能够更好的查看程序的执行流程。
    2. 复杂的程序逻辑,通过老师的口述讲解,很难理解清楚,这个时候借助调试能够很好的帮助同学们理解程序。
    3. 定位问题,提高自我解决问题的能力。

02_IDEA中的Debug步骤
  • 设置断点
  • 调试程序(8个按钮)

8个按钮

按钮说明
2019-09-28_163744.jpg(Alt + F10):如果你的光标在其它行或其它页面,点击这个按钮可跳转到当前代码执行的行
2019-09-28_164022.jpg(F8):步过,一行一行地往下走,如果这一行上有方法不会进入方法。
2019-09-28_162345.jpg(F7):步入。如果当前行有方法,可以进入方法内部,一般用于进入自定义方法内,不会进入官方类库的方法。
2019-09-28_164200.jpg(Alt + Shift + F7):强制步入,能进入任何方法,查看底层源码的时候可以用这个进入官方类库的方法。
2019-09-28_164215.jpg(Shift + F8):步出,从步入的方法内退出到方法调用处,此时方法已执行完毕,只是还没有完成赋值。
2019-09-28_164428.jpg回退断点。
2019-09-28_164418.jpg(Alt + F9):运行到光标处,你可以将光标定位到你需要查看的那一行,然后使用这个功能,代码会运行至光标行,而不需要打断点。
2019-09-28_164437.jpg(Alt + F8):计算表达式。
  • 观察变量
    • 查看变量有三种方式:
      • 程序区查看变量
      • Debugger的Variables中查看变量
      • 鼠标悬停到变量名上会弹出当前变量的值

2019-09-28_165050.jpg

  • 查看输出

03_跳转到当前代码执行的行
  • 跳转到当前代码执行的行(Alt + F10) 2019-09-28_163744.jpg
  • 作用
    • 使程序窗口切换到当前正在运行的程序处。

04_步过调试的使用
  • 步过调试
    • 步过调试按钮(F8)2019-09-28_164022.jpg
  • 作用
    • 步过,一行一行地往下走,如果这一行上有方法不会进入方法。
    • 常用于调试过程中不想进入调用的方法体的情况。

05_步入调试的使用
  • 步入调试
    • 步过调试按钮(F7)2019-09-28_162345.jpg
  • 作用
    • 步入,一行一行地往下走,如果这一行上有方法,则进入方法内部。
    • 一般用于进入自定义方法内,不会进入官方类库的方法。

06_强制步入调试的使用
  • 强制步入调试
    • 强制步入调试按钮(Alt + Shift + F7)2019-09-28_164200.jpg
  • 作用
    • 进入官方类库方法
    • 帮助我们学习和查看JDK源码

07_步出调试的使用
  • 步出调试
    • 步出调试按钮(Shift + F8)2019-09-28_164215.jpg
  • 作用
    • 从方法内退出到方法调用处。
    • 调试的时候,有时候会跳入到自己不想查看的方法体,这个时候使用步出。

08_回退断点调试的使用
  • 回退断点
    • 回退断点按钮 2019-09-28_164428.jpg
  • 作用
    • 回退到当前方法的调用处。
    • 当想重新查看该方法体的执行过程时,不用重新启动Debug,可以使用回退断点方式。

09_运行到光标处
  • 运行到光标处
    • 运行光标处按钮 (F9)2019-09-28_164418.jpg
    • 作用
      • 使程序运行到光标处,而无需设置断点。

10_计算表达式
  • 计算表达式
    • 计算表达式按钮(Alt + F8)2019-09-28_164437.jpg
      2019-10-03_182159.jpg
  • 作用
    • 设置变量,在计算表达式的框里,可以改变变量的值,这样有时候就能很方便我们去调试各种值的情况了。

11_条件断点
  • 条件断点
    • 右键单击断点处,可以设置进入断点的条件
      2019-10-03_182101.jpg
  • 作用
    • 通过设置断点条件,在满足条件时,才停在断点处,否则直接运行。

12_多线程调试
  • 步骤
    • 多线程调试,需要调整断点挂起级别为Thread
      2019-10-05_164127.jpg
    • Frame中选择线程进行调试


在这里插入图片描述



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

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

相关文章

让燃油车再次破防 比亚迪汉唐荣耀双出击

相信很多读者朋友都还记得,就在不久前趣味科技曾经报道,2024龙年伊始比亚迪就打着“电比油低”的旗号,推出了价格仅为7.98万元起的秦PLUS、驱逐舰05荣耀版,向合资燃油车发起了大举进攻。 这两款“7”字头售价的车型上市&#xff0…

<网络安全>《60 概念讲解<第七课 网络模型OSI对应协议>》

1 OSI模型 OSI模型(Open Systems Interconnection Model)是一个由国际标准化组织(ISO)提出的概念模型,用于描述和标准化电信或计算系统的通信功能,以实现不同通信系统之间的互操作性。该模型将通信系统划分…

智能驾驶规划控制理论学习-基于采样的规划方法

目录 一、基于采样的规划方法概述 二、概率路图(PRM) 1、核心思想 2、实现流程 3、算法描述 4、节点连接处理 5、总结 三、快速搜索随机树(RRT) 1、核心思想 2、实现流程 3、总结 4、改进RRT算法 ①快速搜索随机图&a…

每日一类:QString类深入讲解

QString类是Qt框架中的一个核心组件,设计用于方便、高效地处理Unicode字符串。与标准C中的字符串处理方式相比,QString提供了更为丰富的API,支持国际化,并且内部使用UTF-16编码,能够处理世界上几乎所有的语言文字。 设…

Python图像形态学处理:腐蚀、膨胀、礼帽、黑帽……

文章目录 二值形态学灰度形态学 python图像处理教程:初步📷插值变换 最基础的形态学操作有四个,分别是腐蚀、膨胀、开计算和闭计算,【scipy.ndimage】分别实现了二值数组和灰度数组的这四种运算。而针对灰度图像,【sc…

android路由表APP,携程Android面试题

大家应该看过很多分享面试成功的经验,但根据幸存者偏差的理论,也许多看看别人面试失败在哪里,对自己才更有帮助。 最近跟一个朋友聊天,他准备了几个月,刚刚参加完字节跳动面试,第二面结束后,嗯&…

(案例贴2) html+css 倒计时器

欢迎大家使用这个计时器噢 老哥直接附代码咯. timer.html <!DOCTYPE html> <html lang"zh-CN"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0">&l…

python 小游戏《2048》字符版非图形界面

参考链接&#xff1a; 闲谈2048小游戏和数组的旋转及翻转和转置 目录 2048 一、方阵类 二、随机插入1或2 三、 合并和递增 四、 判断和移动 五、 键盘控制 完整源代码 玩法过程 2048 上回说到2048小游戏中数组的各种旋转、翻转的方法&#xff0c;就是为代码编程作准…

非阻塞实现高效键盘扫描功能(STM32F4XX)

目录 概述 1 原理分析 1.1 技术背景 1.2 系统硬件 1.3 STM32 IO&#xff08;输入模式&#xff09;寄存器分析 1.3.1 输入IO的功能描述 1.3.2 输入配置 1.3.3 GPIO 寄存器&#xff08;输入模式相关&#xff09; 1.3.3.1 GPIO 端口模式寄存器 1.3.3.2 GPIO 端口上拉/下拉…

VUE3自定义文章排行榜的简单界面

文章目录 一、代码展示二、代码解读三、结果展示 一、代码展示 <template><div class"article-ranking"><div class"header"><h2 class"title">{{ title }}</h2></div><div class"ranking-list&qu…

单片机精进之路-9ds18b20温度传感器

ds18b20复位时序图&#xff0c;先将b20的数据引脚拉低至少480us&#xff0c;然后再将数据引脚拉高15-60us&#xff0c;再去将测传感器的数据引脚是不是变低电平并保持60-240us&#xff0c;如果是&#xff0c;则说明检测到温度传感器&#xff0c;并正常工作。需要在240us后才能检…

默频,主频,睿频

一、默频 默频就是跟在CPU型号后面的数字&#xff0c;如图中的CPU,默频是1.7GHZ 二、主频 可以理解为在运行中&#xff0c;电脑根据程序的需要进行调度&#xff0c;此时CPU的实际频率&#xff0c;在任务管理器中可以查看&#xff0c;如我的笔记本电脑在没有连接电源的情况下&…

云计算 2月21号 (linux文件及用户管理)

一、文件管理 1.1快捷键 编辑命令&#xff1a; Ctrl a &#xff1a;移到命令行首 Ctrl e &#xff1a;移到命令行尾 Ctrl u &#xff1a;从光标处删除至命令行首 Ctrl k &#xff1a;从光标处删除至命令行尾 Ctrl w &#xff1a;从光标处删除至字首 Ctrl d &#x…

图解知识蒸馏

soft labels与soft predictions越接近越好&#xff0c;通过Loss Fn来实现&#xff0c;产生的数值叫做distillation loss&#xff0c;也叫soft loss。 hard label y与hard prediction越接近越好&#xff0c;通过Loss Fn来实现&#xff0c;产生的数值叫做student loss&#xff0c…

模拟算法题练习(二、DNA序列修正、无尽的石头)

&#xff08;一、DNA序列修正&#xff09; 问题描述 在生物学中&#xff0c;DNA序列的相似性常被用来研究物种间的亲缘关系。现在我们有两条 DNA序列&#xff0c;每条序列由 A、C、G、T 四种字符组成&#xff0c;长度相同。但是现在我们记录的 DNA序列存在错误&#xff0c;为了…

C语言题目:指针

1. 下面代码的结果是&#xff1a; #include <stdio.h> int i; int main() {i--;if (i > sizeof(i)){printf(">\n");}else{printf("<\n");}return 0; }答案&#xff1a;> 解析&#xff1a; i作为全局变量且在未赋值的情况下初始值为1&…

大数据分布式计算工具Spark数据计算实战讲解(filter方法,distinct方法,sortby方法)

练习案例 # #单词统计计数 from pyspark import SparkConf, SparkContext import os os.environ[pyspark_python] "D:/python/JIESHIQI/python.exe" #创建一个sparkconf类对象 conf SparkConf().setMaster("local[*]").setAppName("test_spark_app…

学不动系列-git-hooks和husky+lintstage

git-hooks 为了保证提交的代码符合规范&#xff0c;可以在上传代码时进行校验。常用husky来协助进行代码提交时的eslint校验。husky是基于git-hooks来实现&#xff0c;在使用husky之前&#xff0c;我们先来研究一下git-hooks。 构建git-hooks测试项目 需要使用git-hooks就需…

日志系统项目实现

日志系统的功能也就是将一条消息格式化后写入到指定位置&#xff0c;这个指定位置一般是文件&#xff0c;显示器&#xff0c;支持拓展到数据库和服务器&#xff0c;后面我们就知道如何实现拓展的了&#xff0c;支持不同的写入方式(同步异步)&#xff0c;同步:业务线程自己写到文…

C语言基础(二)

5.指针 5.1 指针的定义 内存区域中的每字节都对应一个编号&#xff0c;这个编号就是“地址”. 在程序中定义一个变量&#xff0c;在对程序进行编译时&#xff0c;系统就会给这个变量分配内存单元. 按变量地址存取变量值的方式称为“直接访问”&#xff0c;如printf("&qu…