IDEA-DeBug理论与实践

文章目录

        • 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.mzph.cn/news/710923.shtml

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

相关文章

THINKPHP 跨域报错解决方案

报错:has been blocked by CORS policy: Response to preflight request doesnt pass access control check: No Access-Control-Allow-Origin header is present on the requested resource. 环境:thinkphp6 nginx 今天和VUE配合调用接口的时候发现跨…

果园预售系统|基于Springboot的果园预售系统设计与实现(源码+数据库+文档)

果园预售系统目录 目录 基于Springboot的果园预售系统设计与实现 一、前言 二、系统功能设计 三、系统功能设计 1 、果园管理 2、水果管理 3、果树管理 4、公告管理 四、数据库设计 1、实体ER图 五、核心代码 六、论文参考 七、最新计算机毕设选题推荐 八、源码获…

常见的4种Bug 出现原因和解决方案

某项目定期进行线上Bug分析大会,主要针对近期出现的Bug和事故进行分析其出现的原因。经过一段时间的数据分析和汇总,找到了在开发过程中,较为常见的Bug以及其出现的原因。 通过分析原因,进一步找到解决方案,从而有利于…

2024.02.29作业

1. TCP模型 server #include "test.h"#define SER_IP "192.168.191.128" #define SER_PORT 9999int main(int argc, char const *argv[]) {int sfd -1;sfd socket(AF_INET, SOCK_STREAM, 0);if (-1 sfd){perror("socket error");return -1;…

算法沉淀——动态规划之两个数组的 dp(上)(leetcode真题剖析)

算法沉淀——动态规划之两个数组的 dp 01.最长公共子序列02.不相交的线03.不同的子序列04.通配符匹配 01.最长公共子序列 题目链接:https://leetcode.cn/problems/longest-common-subsequence/ 给定两个字符串 text1 和 text2,返回这两个字符串的最长 …

0201sherlock(福尔摩斯)-通过名称寻找媒体账号(地址)-github-开源项目学习

文章目录 一 项目简介二 项目安装和演示1 安装2 演示 三 源码分析1 项目结构2 主程序源代码分析 四 添加自定义网址结语 一 项目简介 二 项目安装和演示 1 安装 # clone the repo $ git clone https://github.com/sherlock-project/sherlock.git# change the working direct…

opencv--使用直方图找谷底进行确定分割阈值

直方图原理就不说了,大家自行百度 直方图可以帮助分析图像中的灰度变化,进而帮助确定最优二值化的灰度阈值(threshold level)。如果物体与背景的灰度值对比明显,此时灰度直方图就会包含双峰(bimodal histo…

Python web框架fastapi数据库操作ORM(一)

文章目录 Fastapi ORM操作1、创建模型2、创建数据库连接配置文件3、启动项目4、根据模型类创建数据库表1. 初始化配置,只需要使用一次2. 初始化数据库,一般情况下只用一次3. 更新模型并进行迁移4. 重新执行迁移,写入数据库5. 回到上一个版本6…

Oracle 11g升级19c 后部分查询功能很慢

*Oracle 11g升级19c 后部分查询功能很慢 今天生产突然有个查询非常慢,日志显示执行了50秒左右,但是从日志中拿出SQL在PLSQL执行,发现用时不到1秒,查看SQL,怀疑是下面几种原因导致 1、使用函数不当 UNIT.UNIT_CODE LIKE CONCAT(‘…

状态码转文字!!!(表格数字转文字)

1、应用场景:在我们的数据库表中经常会有status这个字段,这个字段经常表示此类商品的状态,例如:0->删除,1->上架,0->下架,等等。 2、我们返回给前端数据时,如果在页面显示0…

【Unity】在Unity中导出WebGL并读取Excel数据的实现方法

在游戏开发中,数据的处理和导出是至关重要的环节之一。Unity作为一款强大的游戏开发引擎,提供了丰富的工具和功能来处理和导出数据,包括将游戏导出为WebGL应用,并读取外部数据文件,比如Excel表格。本文将介绍如何在Uni…

gpt生成器,批量gpt文章生成器

GPT(生成式预训练模型)生成器软件在当今的数字化时代扮演着越来越重要的角色,它们通过人工智能技术,可以自动生成各种类型的文章内容,为用户提供了无限的创作可能性。本文将介绍6款不同的GPT生成器软件,并介…

STM32自学☞AD单通道

程序的最终运行成果: 当转动电位器时,数值和电压值发生变化 ad.c文件 #include "stm32f10x.h" #include "stm32f10x_adc.h" #include "ad.h" #include "stdint.h" void ad_Init(void) { /* 初始化步骤:…

java学习笔记-初级

一、变量 1.双标签 <!-- 外部js script 双标签 --><script srcmy.js></script> 在新文件my.js里面写&#xff1a; 2.字符串定义&#xff1a; //外单内双var str 我是一个"高富帅"的程序员;console.log(str);// 字符串转义字符 都是用 \ 开头 …

MySQL-MHA搭建、故障测试

一、架构说明 MHA&#xff08;Master High Availability&#xff09;是一个用于 MySQL 主从复制管理和自动故障转移的开源工具集。MHA 的主要目的是提供 MySQL 环境的高可用性和自动故障转移功能&#xff0c;确保在主库发生故障时能够快速切换到备库&#xff0c;降低业务中断时…

ElasticSearch之Completion Suggester

写在前面 通过completion suggester可以实现如下的效果&#xff1a; 其实就是做的like xxx%这种。通过FST这种数据结构来存储&#xff0c;实现快速的前缀匹配&#xff0c;并且可以将es所有的数据加载到内存中所以速度completion的查询速度非常快。 需要注意&#xff0c;如果…

HUAT——Fasc——算法组学习笔记

目录 系列文章目录 前言 一、配置相关环境 二、创建工作空间 1.创建工作空间并初始化 2.进入 src 创建 ros 包并添加依赖 三、HelloWorld(C版) 1.进入 ros 包的 src 目录编辑源文件 2.编辑 ros 包下的 Cmakelist.txt文件 3.进入工作空间目录并编译 四 运行程序 五 …

docker 基础(二)

常见命令 Docker最常见的命令就是操作镜像、容器的命令&#xff0c;详见官方文档&#xff1a;https://docs.docker.com/ 数据卷 命令说明文档地址docker volume create创建数据卷docker volume createdocker volume ls创建数据卷docker volume lsdocker volume rm查看所有数…

Swiper实现轮播效果

swiper官网&#xff1a;https://3.swiper.com.cn/ <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8" /><meta name"viewport" content"widthdevice-width, initial-scale1.0" /><title&…

中间件-Nginx加固(控制超时时间限制客户端下载速度并发连接数)

中间件-Nginx加固&#xff08;控制超时时间&限制客户端下载速度&并发连接数&#xff09; 1.1 Nginx 控制超时时间配置1.2 Nginx 限制客户端下载速度&并发连接数 &#x1f496;The Begin&#x1f496;点点关注&#xff0c;收藏不迷路&#x1f496; 1.1 Nginx 控制超…