Debug调试的使用(IDEA 基础篇 喂奶级教程)

news2024/12/22 19:01:46

引言

        在编程中,Debug(调试)是指在程序运行时,通过一系列的工具和技术,对程序进行逐行调试和分析,从而发现和修复程序中的错误和问题。Debug 功能是程序开发中非常重要的一个环节,它可以帮助开发者快速定位和解决程序中的问题,提高开发效率和代码质量。

功能介绍

Debug 功能通常包括以下内容:

  1. 断点调试:在程序执行过程中,开发者可以在代码中设置断点,当程序执行到断点处时,程序会暂停执行,开发者可以通过查看变量值、调用栈等信息来分析程序的执行情况。

  2. 单步调试:在程序执行过程中,开发者可以逐行执行程序,观察程序执行的过程和变量值的变化,从而找到程序中的错误和问题。

  3. 变量监视:在程序执行过程中,开发者可以通过监视变量的值来分析程序的执行情况。开发者可以查看变量的值、类型和属性等信息,从而找到程序中的问题。

  4. 调用堆栈:调用堆栈是一个记录程序执行流程的数据结构,它可以显示程序执行过程中的函数调用关系和调用顺序,从而帮助开发者定位程序中的问题。

  5. 日志输出:在程序执行过程中,开发者可以通过输出日志来记录程序的执行情况和变量值的变化,从而进行分析和调试。

使用Debug

        下边我们用一段代码,来讲解debug的一些基础操作。

代码功能:判断一个数是否为素数

import java.util.Scanner;

public class DebugLearning {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        int n = scanner.nextInt();
        boolean b = fun(n);
        System.out.println(b);
    }

    public static boolean fun(int n) {
        for (int i = 2; i <= Math.sqrt(n); i++) {
            if (n % i == 0)
                return false;
        }
        return true;
    }
}

1.打上断点

        操作:单击下图绿色框线内某行数字后的空白处。

        操作结果:如下图所示

 2.启动Debug

        操作:单击main函数左侧的绿色运行按钮,找到Debug,单击运行。如下图所示

         操作结果:IDEA窗口下方弹出Debug调试窗口,程序运行到断点处。

 3.单步调试按钮

        操作:单击Debug调试窗口中蓝色折线箭头。如下图所示

        操作结果:等待输入操作。如下图所示

         操作:单击debug调试窗口中的Console,进行输入操作。如下图:

        操作:输入数据为9,按下回车。

        操作结果:程序运行到第9行。如下图所示

 

        操作:单击debug调试窗口中的Debugger返回面板。

        此时,继续点击单步执行按钮,会跳到第10行,直到执行到代码运行结束(第11行)。

3.跳入按钮

        若在第9行时,想进入fun()方法:

        操作:单击竖直向下的蓝色箭头。如下图所示

         操作结果:程序跳入fun()方法内第一行。如下图所示

        若在fun内继续执行单步调试,单击单步调试按钮即可。

4.跳出按钮

        若要返回主函数内,单击蓝色竖直向上的按钮,即可跳出。

        操作:单击跳出按钮。如下图所示

         操作结果:程序跳转至第9行。如下图所示

 5.恢复程序按钮

        倘若不想一次次点击单步调试按钮,那么恢复程序按钮是最好的选择。如下图所示

         单击恢复程序按钮,会有两种情况出现:

                1.程序运行到下一个断点。这种情况是在接下来要执行的程序段中含有断点。

                2.程序执行结束。这种情况是在接下来要执行的程序段中没有断点。

结语

        以上就是Debug最基础的一些操作,也是写代码必备的技能。

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

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

相关文章

JSON对象的stringify()和parse()方法使用

JSON对象的stringify和parse方法使用 JSON 格式JSON 对象JSON.stringify()1.JSON.stringify(value)2.JSON.stringify(value,replace)3.JSON.stringify(value,replace,space)4.注意的点 JSON.parse() JSON 格式 JSON 格式&#xff08;JavaScript Object Notation 的缩写&#xf…

一文读懂【TypeScript】的发展设计理念

导语&#xff1a; 在了解 TypeScript 之前&#xff0c;我们需要了解 什么是强类型语言和什么是弱类型语言&#xff0c;以及什么是静态类型&#xff0c;什么又是动态类型。 强类型不允许任意的隐式类型转换&#xff0c;而 弱类型 允许静态类型&#xff1a;一个变量声明时它的类型…

STM32使用高级定时器输出互补pwm波

STM32使用高级定时器输出互补pwm波 前言硬件和软件cubemx新建工程打开Debug模式配置时钟源六大时钟的作用选择Crystal/Ceramic Resonator&#xff0c;即使用外部晶振作为HSE的时钟源。 配置时钟配置高级定时器TIM8和通用定时器TIM3这里大概解释一下配置pwm输出用到的几个参数我…

ASEMI快恢复二极管MUR20100CTR在电子工程中的应用

编辑-Z 随着电子技术的日益发展&#xff0c;各种电子元件的使用场景与需求也在逐步扩大。今天&#xff0c;我们将聚焦于一款广泛应用于各类电路的二极管——MUR20100CTR&#xff0c;来详细解读其性能特征及应用。 一、MUR20100CTR二极管的主要特性 MUR20100CTR是一款极高性能的…

03 QT对象树

Tips: QT通过对象树机制&#xff0c;能够自动、有效的组织和管理继承自QObject的Qt对象&#xff0c;不需要用户手动回收资源&#xff0c;系统自动调用析构函数。 验证对象树功能&#xff1a; 新建C文件 继承自QPushButton&#xff0c;但没有QPushButton&#xff0c;但有其父类…

简单高效的交易系统,只需这种行情分析工具

行情分析的意义在于&#xff0c;首先它给我们不得不做出的方向性选择提供一些技术的支持。其次&#xff0c;它可以给我们提出一个入市点&#xff0c;一个理想的盈利点&#xff0c;一个认输的失败点。无论你用什么办法进行行情预测或指导&#xff0c;只要你的分析结果中有这样三…

Vue中的侦听器:数据变化的秘密揭示

一、侦听器&#xff1a;vue中想监听数据的变化 &#x1f680;&#xff08;一&#xff09;侦听器watch 如何侦听到某个变量值改变呢&#xff1f;使用watch配置项&#x1f6a7;&#x1f6a7;&#x1f6a7;watch&#xff1a;可以侦听到data/computed属性值的改变。语法&#xff…

C++入门学习(2)

思维导图&#xff1a; 一&#xff0c;缺省参数 如何理解缺省参数呢&#xff1f;简单来说&#xff0c;缺省参数就是一个会找备胎的参数&#xff01;为什么这样子说呢&#xff1f;来看一个缺省参数就知道了&#xff01;代码如下&#xff1a; #include<iostream> using std…

商城-学习整理-基础-环境搭建(二)

目录 一、环境搭建1、安装linux虚拟机1&#xff09;下载&安装 VirtualBox https://www.virtualbox.org/&#xff0c;要开启 CPU 虚拟化2&#xff09;虚拟机的网络设置3&#xff09;虚拟机允许使用账号密码登录4&#xff09;VirtualBox冲突5&#xff09;修改 linux 的 yum 源…

JDK JRE JVM

JDK JRE JVM JDKJREJVM三者之间的联系三者之间的区别 JDK JDK是用于开发、编译、调试和运行Java应用程序的软件包&#xff0c;包含了Java编程语言的开发工具和Java运行时环境。JDK包括Java编译器&#xff08;javac&#xff09;、Java虚拟机&#xff08;JVM&#xff09;和Java类…

AtcoderABC246场

#A - Four PointsA - Four Points 题目大意 在平面上有一个矩形&#xff0c;矩形的每条边都平行于x轴或y轴&#xff0c;并且它的面积不为零。 给定这个矩形三个顶点的坐标 (x1, y1), (x2, y2), (x3, y3)&#xff0c;找到另外一个顶点的坐标。 思路分析 根据矩形的性质可以通…

为什么低代码只能掀起小浪花?了解低代码的得失与前景

导语&#xff1a;低代码是相对于高代码和无代码的一个中间概念&#xff0c;通常强调的是用户不需要学习如何写代码&#xff0c;就能完成工作。然而低代码模式一直不温不火&#xff0c;原因是什么呢&#xff1f;一起来看一下吧。 最近互联网大公司裁员消息又起&#xff0c;“低代…

裁剪内核和新内核available差异大原因分析

背景 host内核裁剪时会进行收益的比较&#xff0c;比如裁剪前用5.10最新内核得出内存数据&#xff0c;然后和裁剪后的内存数据进行对比。 在进行对比中&#xff0c;发现裁剪后的内存available比裁剪前多了10个G&#xff0c;有点不正常了&#xff0c;需要分析下这10个G到底是怎…

基于VORS、CCDM模型、GeoDetector、GWR模型集成技术在城镇化与生态系统健康空间关系分析及影响效应

详情点击链接&#xff1a;基于VORS、CCDM模型、GeoDetector、GWR模型集成技术在城镇化与生态系统健康空间关系分析及影响效应 第一&#xff1a;生态系统健康理论基础及研究热点分析 1.生态系统健康概念及内涵 2.生态系统健康评价方法与指标体系 3.城镇化与生态系统健康 4.…

Git使用规范Git常用命令

Git使用规范&&Git常用命令 分支规范 master分支 master的分支HEAD和历史commit均是是稳定、可发布的状态。master分支的每个commit都需要打tag&#xff0c;如v1.0、v1.1、v1.2、v2.0等。仅能从test分支和hotfix分支合并过来。 hotfix的合并必须是通过代码审核和测试…

AI数字人:图像超分辨率模型 Real-ESRGAN

1 Real-ESRGAN介绍 1.1 Real-ESRGAN是什么&#xff1f; Real-ESRGAN全名为Enhanced Super-Resolution GAN&#xff1a;增强的超分辨率的对抗生成网络&#xff0c;是由腾讯ARC实验室发布的一个盲图像超分辨率模型&#xff0c;它的目标是开发出实用的图像/视频修复算法&#xf…

oled拼接屏在柳州的户外广告中有哪些应用展现?

柳州oled拼接屏是一种高端的显示屏&#xff0c;它采用了OLED技术&#xff0c;具有高亮度、高对比度、高色彩饱和度、高刷新率等优点&#xff0c;能够呈现出更加真实、清晰、细腻的图像效果。 同时&#xff0c;柳州oled拼接屏还具有拼接功能&#xff0c;可以将多个屏幕拼接在一…

2023婴幼儿奶粉市场数据分析(天猫数据中心)

我国婴幼儿奶粉市场一直保持着相当大的规模&#xff0c;虽然近几年新生人口数量不断下降&#xff0c;但伴随消费者的消费升级不断加速、大龄孩童吃奶粉的时间延长等&#xff0c;整体来看&#xff0c;婴幼儿奶粉行业市场规模保持平稳。 根据鲸参谋电商数据分析平台的相关数据显示…

240. 搜索二维矩阵 II

题目描述&#xff1a; 主要思路&#xff1a; 利用矩阵中的单调性进行搜索。 class Solution { public:bool searchMatrix(vector<vector<int>>& matrix, int target) {int nmatrix.size(),mmatrix[0].size();int in-1,j0;while(i>0&&j<m){if(m…

Hadoop: High Available

序言 在Hadoop 2.X以前的版本&#xff0c;NameNode面临单点故障风险&#xff08;SPOF&#xff09;&#xff0c;也就是说&#xff0c;一旦NameNode节点挂了&#xff0c;整个集群就不可用了&#xff0c;而且需要借助辅助NameNode来手工干预重启集群&#xff0c;这将延长集群的停…