【java基础】IDEA 的断点调试(Debug)

news2024/11/15 17:22:33

目录

1.为什么需要 Debug

2.Debug的步骤

2.1添加断点

2.2单步调试工具介绍

 2.2.1 Step Over

 2.2.2 Step Into

2.2.3 Force Step Into

2.2.4 Step Out

2.2.5 Run To Cursor

2.2.6 Show Execution Poiint

2.2.7 Resume Program

3.多种 Debug 情况介绍

3.1行断点

3.2方法断点

3.2.1样例一

3.2.2样例二


1.为什么需要 Debug

编好的程序在执行过程中如果出现错误,该如何查找并定位错误呢?简单的代码可以直接看出来,但如果代码比较复杂,就需要借助程序调试来查找错误了。

2.Debug的步骤

Debug(调试)程序步骤如下

  1. 添加断点
  2. 启动调试
  3. 单步执行
  4. 观察变量和执行流程,找到并解决问题

2.1添加断点

源代码文件中,在想要设置断点的代码行的前面的标记行处,单击鼠标左键就可以设置断点,在相同位置再次单击即可取消断点。

2.2单步调试工具介绍

 2.2.1 Step Over

每点一次就执行一步(F8)

 2.2.2 Step Into

进入到方法内部(F7)

2.2.3 Force Step Into

进入源码(Alt + Shift + F8)

2.2.4 Step Out

跳出当前方法(Shift + F8)

2.2.5 Run To Cursor

运行至光标所在行(Alt + F9)

2.2.6 Show Execution Poiint

显示断点所在位置(Alt + F10)

2.2.7 Resume Program

运行至下一断点 (F9)

在 Debug 过程当中,可以动态的下断点

3.多种 Debug 情况介绍

3.1行断点

示例代码:

/**
 * 行断点
 */
public class Debug01 {
    public static void main(String[] args) {
        int m = 10;
        int n = 20;
        System.out.println("交换前:m = " + m + ", n = " + n);
        swap(m, n);
        System.out.println("交换后:m = " + m + ", n = " + n);
    }

    public static void swap(int m, int n) {
        int temp = m;
        m = n;
        n = temp;
    }
}

运行结果如下:

运行结果

 我们发现 m 和 n 的值实际上并没有交换,为了探究其原因,我们可以使用行断点进行调试

点击 Debug 后,程序会运行到第一个断点的位置上

此后,每次点击 Step Over 都会向下执行一步

调试到此处,我们选择 Step Into 进入到方法内部,若中途想要跳出当前方法,可以点击 Step Out;若仍点击 Step Over,则会将 swap 方法一次性执行完毕并执行到 main 方法的下一条语句

最后我们可以看到在 swap 方法中 m=20, n=10

但是在 main 方法中仍然 m=10, n=20

如果运行到第一个断点以后,想要直接运行到下一个断点,我们可以点击 Resume Program

3.2方法断点

  • 断点设置在方法的签名上,默认当进入时,断点可以被唤醒
  • 也可以设置在方法退出时,断点也被唤醒

示例代码:

/**
 * 方法断点
 */
public class Debug02 {
    public static void main(String[] args) {
        //1.
        Son instance = new Son();
        instance.test();
        //2.类的多态性
        Father instance1 = new Son();
        //3.接口的多态性
        Consumer con = new ConsumerImpl();
        con.accept("example");
        //4.
        HashMap map = new HashMap();
        map.put("Tom", 12);
        map.put("Jerry", 11);
        map.put("Tony", 20);
    }
}

class Father{
    public void test() {
        System.out.println("Father : test1");
        System.out.println("Father : test2");
    }
}

class Son extends Father{
    @Override
    public void test() {
        System.out.println("Son : test1");
        System.out.println("Son : test2");
    }
}

interface Consumer{
    void accept(String str);
}

class ConsumerImpl implements Consumer{
    @Override
    public void accept(String str) {
        System.out.println("ConsumerImpl: " + str);
    }
}

3.2.1样例一

点击 Debug 以后会停留在断点方法的第一行代码的位置

右键断点我们可以勾选此处,此后方法退出时断点也被唤醒

3.2.2样例二

我们在父类打下断点,子类不打断点

运行时,子类明明没有断点,但是也停留了,这叫做方法的重写,子类重写父类的方法,即覆盖

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

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

相关文章

XSS GAME

源网站:XSS 游戏 - 学习 XSS 变得简单! |创建者 PwnFunction 以下为解码工具: 在线 JSFuck 加密 - 百川在线工具箱 (chaitin.cn) CyberChef 1、Ma Spaghet! 条件 Difficulty is Easy.Pop an alert(1337) on sandbox.pwnfunction.com.No…

分析FP -Growth代码运行内存太大而无法运行的原因

🏆本文收录于《CSDN问答解惑-专业版》专栏,主要记录项目实战过程中的Bug之前因后果及提供真实有效的解决方案,希望能够助你一臂之力,帮你早日登顶实现财富自由🚀;同时,欢迎大家关注&&收…

随记 - 2024 年 4 月 12 日

写在前面 444 字 | 生活 | 经历 | 感触 正文 或许因为压力大,亦或者简单的糖分不足,今晚好想吃面包和蛋糕。 蛋糕吃不完也买不起,面包还是可以。 实在饿,出门了。 导航两家西点店,关门。怏怏地找另一家。 在十点前&a…

效果炫酷的3D翻转书特效WordPress主题模板MagicBook主题v1.19

正文: MagicBook是一款支持3D翻书特效的书籍WordPress主题。支持可视化页面搭建,3D菜单,完全自适应设计,WPML多语言支持。 这款主题一定会让你爱不释手。虽然他是英文的,但不可不承认的是,它优雅的设计会让你愿意花时…

[Linux]将一个文件复制到多个文件夹下

一、简介 本文介绍了在linux下如何使用cp命令将一个文件复制到多个文件夹、多个文件复制到一个文件夹和多个文件复制到多个文件夹下。 二、代码 假设初始时test/文件夹的结构如下: 1. 将一个文件复制到多个文件夹 a.命令示例 将file1复制到目录des_dir1/&#…

【PGCCC】pg_bestmatch.rs:使用 BM25 提升您的 PostgreSQL 文本查询#PCA

这是一个 PostgreSQL 扩展,它将最佳匹配 25 分数 (BM25) 文本查询的强大功能引入您的数据库,从而增强您执行高效和准确的文本检索的能力。此扩展允许用户从文本生成 BM25 统计稀疏向量,利用 BM25 在各种基准测试任务中经过验证的性能。 为什…

8.16 QT

1.思维导图 2 将day1做的登录界面升级优化【资源文件的添加】 2> 在登录界面的登录取消按钮进行一下设置: 使用手动连接,将登录框中的取消按钮使用qt4版本的连接到自定义的槽函数中,在自定义的槽函数中调用关闭函数 将登录按钮使用qt5…

《SPSS零基础入门教程》学习笔记——03.变量的统计描述

文章目录 3.1 连续变量(1)集中趋势(2)离散趋势(3)分布特征 3.2 分类变量(1)单个分类变量(2)多个分类变量 3.1 连续变量 (1)集中趋势 …

使用 Python 解密加密的 PDF 文件

使用 Python 进行 PDF 文件加密-CSDN博客文章浏览阅读89次,点赞2次,收藏2次。定义一个名为的函数,该函数接受三个参数:输入的 PDF 文件路径input_pdf、输出的加密 PDF 文件路径output_pdf和密码password。https://blog.csdn.net/q…

django中的MESSAGE组件

文章目录 message组件1 使用配置2 设置值3 读取值4 源码分析 message组件 1 使用配置 INSTALLED_APPS [# django.contrib.admin,# django.contrib.auth,# django.contrib.contenttypes,# django.contrib.sessions,django.contrib.messages,django.contrib.staticfiles,"…

AI编程工具合集【请按需收藏】

成长路上不孤单😊【14后小学生一枚,C爱好者,持续分享所学,如有需要欢迎收藏转发😊😊😊😊😊😊😊】 关于【AI编程工具合集】 在编程领域&#xff0c…

C ICU webassembly库编译

准备环境 在本机搭建Linux环境_本地单机搭建linux系统-CSDN博客 C wasm 使用教程-CSDN博客 法一 git clone https://github.com/mabels/icu.git git checkout -b release-65-1 git diff -p wasm32-start..remotes/origin/wasm32 | patch -p1 cd icu4c/source ./runConfigu…

C#工具库-NPOI

一、简介 NPOI是一个基于c#语言的,开源的,能够在不安装Microsoft Office组件的条件下读写Microsoft Office 的库。前身是Java的POI库,有“先贤”将其翻译成了c#语言的库,而这种由java到c#库的演变并非个例,比如DotNetty之于Netty,…

云动态摘要 2024-08-17

给您带来云厂商的最新动态,最新产品资讯和最新优惠更新。 最新优惠与活动 注册阿里云免费领云服务器_云服务器ECS_阿里云 阿里云 2024-08-14 云上试用新玩法,个人享300元免费额度,企业享660元免费额度,多种规格随心试 [免费体验…

恒创科技:云服务器的备份和快照哪个更好?

云服务器的备份和快照都是为了保护数据和恢复系统状态的重要手段,但它们有不同的应用场景和特点。在本指南中,我们将探讨这些数据管理方法之间的差异、它们的优点和局限性。 什么是备份? 想象一下,备份就是数据的“时间胶囊”。它们就像老相…

蓝盆花:神秘而迷人的自然之美

一、蓝盆花的形态特征 蓝盆花是多年生草本植物,植株高度通常在30 – 80厘米之间。茎直立,黄白色或带紫色,具棱,自基部分枝,节间长6 – 12厘米,疏或密被贴伏白色短柔毛。 蓝盆花的叶形态多样。基生叶成丛&a…

Nginx 核心配置详解

章节 1 NGINX 的源码安装 2 NGINX 核心配置详解 3 NGINX 之 location 匹配优先级 4 NGINX 基础参数与功能 目录 1 配置文件说明 1.1 nginx 配置文件格式说明 1.2 Nginx 主配置文件的配置指令方式: 1.3 主配置文件结构:四部分 1.4 nginx 文件作用解…

1. 数据结构——顺序表的主要操作

1. 内容 顺序表的初始化、插入、删除、按值查找、输出以及其时间复杂度的计算。 2.代码 #include<stdio.h> #include<stdlib.h> //函数结果状态代码 #define OK 1 #define OVERFLOW -2 #define ERROR 0 #define MAXSIZE 100typedef int ElemType; //顺序表每个…

Vue.js入门系列(九):表单数据处理、过滤器及常用指令

个人名片 &#x1f393;作者简介&#xff1a;java领域优质创作者 &#x1f310;个人主页&#xff1a;码农阿豪 &#x1f4de;工作室&#xff1a;新空间代码工作室&#xff08;提供各种软件服务&#xff09; &#x1f48c;个人邮箱&#xff1a;[2435024119qq.com] &#x1f4f1…

Linux环境开发工具【yum与vim】

&#x1f308;个人主页&#xff1a;Yui_ &#x1f308;Linux专栏&#xff1a;Linux &#x1f308;C语言笔记专栏&#xff1a;C语言笔记 &#x1f308;数据结构专栏&#xff1a;数据结构 文章目录 1.Linux软件包管理器yum1.1 快速使用yum 2. Linux编辑器-vim的使用2.1 vim的基本…