IDEA下java程序的简单调试

2023-11-19

本次任务实现的是一个java的程序调试。

首先本次进行调试的一个程序是实现从1累加到100的功能,是在IDEA下进行编写的。如图所示:

将其运行之后得到的结果如图所示:

把第12行的输出语句给取消掉注释之后再运行一次得到的结果如图所示: 

这里由于输出结果太多,所以只截取到了一部分。不过可以看到,在加了这个循环中的输出语句之后,就可以清楚的看到每次循环所经历的一个过程,所得到的结果。

当然不仅只能这样来进行观察程序的运行,我们可以使用IDEA的Debug功能。在编程的时候使用Debug有很多的好处,比如说能够跟踪变量,可以看到变量值的变化。或者是能够迅速的找到程序中所出现的错误。

首先第一步就是要设置断点,如图所示:

断点是要设置到一个有效的代码行左边的空白处,这里的断点是表示当手动Debug来运行程序时,程序会在断点之前停止运行。如图所示:

                                                运行Debug

执行完Dubug之后会出现一个Debug的调试窗口,如图所示:

当点击的时候会执行代码的下一行,它的快捷键是F7,如图所示:  

右边显示的sum=0就是我们点击就能得到的下一行代码执行的内容,右边这个方框也就是变量值的显示区域。同时代码行的右边也能够看到变量的值,这里sum的初始值为0,如图所示: 

再次点击,进入到循环中,i的初始值为1,如图所示:

再点击一次​​​​​​​就能够得到第一次循环后sum的值为1,如图所示:

代码行处也是显示了变量的值,如图所示:

值得一提的是,每运行到一行程序时代码行都会有这种与其他代码行不同颜色的提示。同时main后面的数字也是告诉我们执行到哪一行。如图所示:

这里就是表示执行到main方法得第10行。

而如果要直接运行完整个程序就可以点击左边的​​​​​​​ 快捷键是F9,就可以得到运行后的结果,结果是在​​​​​​​ 里面进行查看。如果想要重新Debug,是点击​​​​​​​,快捷键是Ctrl+F5。当然要结束Debug,可以点击​​​​​​​,快捷键是ctrl+F2。 如图所示:

按下F9得到运行得结果,在Console中查看,如图所示:

接下来对程序进一步的改进,将循环体给放入到了一个方法中,如图所示:

同样,如果将第17行的输出语句给取消注释之后也是能够观察到运行过程,如图所示: 

然后把第17行的语句注释掉进行Debug调试,在第10行调用方法语句处加上断点如图所示:

这个时候如果点击​​​​​​​,就会直接往下运行,因为​​​​​​​表示的是步过,就是直接往下走,如果这一行上有方法不会进入到方法体当中,其快捷键是F8,如图所示:   

 点击一次​​​​​​​ 后,直接跳过方法运行到第11行,并且能够直接从Console中看到方法运行的结果,如图所示:

点击第二次​​​​​​​ 后,直接结束,如图所示; 

而如果使用的是仍然是​​​​​​​就能够进入到方法内部,因为​​​​​​​表示的是步入,如果当前行有方法就能够直接进入到方法内部,不过只能进入到自行定义的方法中,不能进入到官方类库中的方法,快捷键是F7。如图所示:  

可以看到左下角的Debug框中也表示了进入到sum方法,运行到第15行。接下来继续点击​​​​​​​就和前面所讲的一样,反复进行循环,循环结束后,就得到运行结果,程序结束。

而如果在运行到方法中,想要跳出方法,直接将方法运行结束,就要点击​​​​​​​,如图所示:  

表示的是步出,就是从方法内部回到方法的调用处,快捷键是shift+F8.如图所示: 

在方法体内点击步出之后就直接跳到了第11行。 

 所以当在对java程序进行调试的时候,如果不要进入方法中查看,就可以直接使用​​​​​​​步过进行查看.。如果要进入方法中查看,就需要使用 步入进行查看。在方法之中想要退出到方法调用处需要使用步出。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

IDEA下java程序的简单调试 的相关文章

  • 为什么尝试使用 Hamcrest 的 hasItems 的代码无法编译?

    为什么这个不能编译 哦 怎么办 import static org junit Assert assertThat import static org junit matchers JUnitMatchers hasItems ArrayL
  • 为什么这不会绘制图像?

    我想做的是 当我运行应用程序时 它会启动线程并且图像显示 3 秒 3000 毫秒 然后线程停止运行 图片路径正确 图片文件存在 线程本身运行 但是 图像似乎没有显示 可能出什么问题了 这是我的代码 package org main impo
  • 如何将 Excel 中的图表导出为图形

    我有一系列 Excel 电子表格 每个电子表格至少包含一页数据和一页根据数据创建的图表 我需要捕获 不从数据中重新生成 将现有图表作为网络友好图像 这可以通过 Java 或 Net 实现吗 我知道 POI 的东西 Java 不会这样做 或者
  • javax.naming.NameNotFoundException

    我正在 JBoss 5 容器中运行 ejb 示例 我正在使用一个例子从这里开始 第一部分 http www roseindia net jboss jboss 3 2 shtml 在示例中 我在 JBoss 中部署了 bean 并在 Tom
  • 可以显式删除 lambda 的序列化支持

    As 已经知道 https stackoverflow com a 22808112 2711488很容易添加序列化当目标接口尚未继承时支持 lambda 表达式Serializable 就像 TargetInterface Seriali
  • Encog - 如何加载神经网络的训练数据

    The NeuralDataSet我在实际中看到的对象除了 XOR 之外什么都没有 它只是两个小数据数组 我无法从文档中找出任何内容MLDataSet 似乎所有内容都必须立即加载 但是 我想循环遍历训练数据 直到到达 EOF 然后将其算作
  • Lambda 表达式更慢?

    我有下面这段代码 PriorityQueue
  • JUnit 测试方法无法返回值

    为什么 JUnit 测试方法无法返回值 文档 https junit org junit5 docs current user guide writing tests classes and methods说 强调我的 测试方法和生命周期方
  • 如何将 openapi-generator 中的客户端包含在 gradle java 应用程序中?

    我想创建一个 gradle java 应用程序 它从 openAPI 规范文件生成客户端并使用该客户端 所以我创建了一个java应用程序gradle init 类型 应用程序 语言 Java DSL groovy 测试框架 Junit Ju
  • Java SWT 用户输入验证

    在 SWT 中进行用户输入验证时 Java 约定是什么 我读到有 FieldEditors 它们是非常方便的字段 但遗憾的是仅适用于首选项和对话框 我还了解到有一个 IValidator 接口 但它经常与数据绑定一起使用 就我而言 我的大多
  • 如何在生产中安全地更改会话 cookie 域或名称?

    我们最近意识到我们的会话 cookie 正在被写入我们网站的完全限定域名 www myapp com 例如 MYAPPCOOKIE 79D5DB83 domain www myapp com 我们希望将其切换为可以跨子域共享的cookie
  • 测试 Hessian remoting-servlet.xml

    我们使用 Hessian 来实现富客户端和服务器之间的通信 由于移动和重命名 remoting servlet xml 中的条目有时会与实际的类名不匹配 因此 我正在寻找一种简单的方法来测试远程处理 xml 有没有简单的方法可以做到这一点
  • 如何自定义 JFrame 上的标题栏?

    我想在我的 Java Swing 桌面应用程序中拥有一个自定义的标题栏 最好的方法是什么 我可以通过在 JFrame 的构造函数中使用以下代码来使用 Swing 标题栏 this setUndecorated true this getRo
  • Spring-data-cassandra:创建名称为“sessionFactory”的 bean 时出错,并且无法解析对 bean“cassandraTemplate”的引用

    我有一个 springboot 应用程序 在其中连接到 cassandra DB 我的 pom xml parent gt
  • android中ScrollView中的图像

    在我的应用程序中 我想放置一个 png 文件 并且希望它在横向和纵向模式下都被视为滚动图像 请建议代码或示例 要使您的 Imageview 在高度不适合时滚动 您可以在 xml 中的 ScrollView 内添加一个 ImageView 并
  • java.lang.NoClassDefFoundError: org/apache/commons/cli/ParseException

    我想将 apache cli 添加到我的应用程序中 但我有问题 当我尝试运行它时显示这些错误 Error A JNI error has occurred please check your installation and try aga
  • Java并发锁和条件的使用

    我可以用object wait object notify and synchronized blocks解决生产者消费者类型的问题 同时我可以使用locks and conditions from java util concurrent
  • 如何在非Spring的构造型类中使用@Autowired

    我想在此类中使用该存储库 但是当我放置像 Component 这样的构造型时 我从 IDE 收到错误 无法自动装配 未找到 身份验证 类型的 bean public class CustomMethodSecurityExpressionR
  • 注释处理工具<-检查有效注释

    I have ColumnMetadata index 1 ColumnMetadata index 2 ColumnMetadata index 3 我必须使用 APT 检查索引号是否唯一 我不知道该怎么做 我看不懂教程 一般我在网上找资
  • POJO 支持使用omnifaces 自动完成primefaces

    我正在尝试在我的项目中使用 primefaces 自动完成组件 以避免将特定转换器写入我尝试使用的每个列表对象全能面孔 http showcase omnifaces org converters ListConverter如建议的here

随机推荐

  • 机器学习:深入理解 LSTM 网络 (一)

    Recurrent Neural Network Long Short Term Memory Networks LSTMs 最近获得越来越多的关注 与传统的前向神经网络 feedforward network 不同 LSTM 可以对之前的
  • 将一条直线朝着划线方向进行偏移

    写了一个将一条link朝着划线方向偏移一定的距离 供参考 def cal poi geom1 geom2 dis 将一条直线link朝着划线方向偏移 param geom1 param geom2 param dis return dis
  • 0动态规划中等 NC206 跳跃游戏(二)

    NC206 跳跃游戏 二 描述 给定一个非负整数数组nums 假定最开始处于下标为0的位置 数组里面的每个元素代表下一跳能够跳跃的最大长度 如果可以跳到数组最后一个位置 请你求出跳跃路径中所能获得的最多的积分 1 如果能够跳到数组最后一个位
  • 信息系统项目管理师学习笔记

    信息系统项目管理师学习笔记 信息化从小到大分为以下5个层次 产品信息化 企业信息化 产业信息化 国民经济信息化 社会生活信息化 国家信息化体系包括6要素 1 信息技术应用 2 信息资源 3 信息网络 4 信息技术和产业 5 信息化人才 6
  • Javascript高级应用:文件操作篇

    Javascript是网页制作中离不开的脚本语言 依靠它 一个网页的内容才生动活泼 富有朝气 但也许你还没有发现并应用它的一些更高级的功能吧 比如 对文件和文件夹进行读 写和删除 就象在VB VC等高级语言中经常做的工作一样 怎么样 你是否
  • 数据结构第五章(堆、哈夫曼树、哈夫曼编码)

    什么是堆 堆是按照一定顺序组织的完全二叉树 优先队列 特殊的 队列 取出元素的顺序是依照元素的优先权 关键字 大小 而不是元素进入队列的先后顺序 是否可以采用二叉树存储结构 可以 查找与删除的时间复杂度均为以2为底n的对数即log 2 n
  • OpenWRT 添加 WEB 配置界面实战记录

    本篇是记录在 Openwrt 镜像中添加 自定义的 web 配置界面过程 编译进 openwrt 的系统镜像中 第一步 建立项目文件目录 mkdir p feeds luci applications luci app Gateway mk
  • 我说的不是小鹅通

    互联网大致是这么三极 1 内容 应用表现为新闻 文学 知识 音乐 视频 直播 内容或专业媒体原创 或自媒体 UGC 或爬虫聚合 表现形式为文字 图片 音频 视频 承载物是一个个的工具App 2 游戏 3 电子商务 1 数据内容 小鹅通跟随的
  • 从零开始写一个Javascript解析器

    最近在研究 AST 之前有一篇文章 面试官 你了解过 Babel 吗 写过 Babel 插件吗 答 没有 卒 为什么要去了解它 因为懂得 AST 真的可以为所欲为 简单点说 使用 Javascript 运行Javascript代码 这篇文章
  • 手摸手带你玩转Vue3——Vue2升级Vue3

    今年年初 尤大大公布了一个重磅消息 将Vue3作为Vue的默认版本 这无疑不是对我们开发人员的内卷煽风点火 vue默认版本改动意味着 官方将会把Vue研发重心放到vue3上 vue2也开始走下坡路 至于淘汰过时只是时间问题了 从而周边生态
  • VMWare虚拟机网络配置

    Bridged 桥接模式 桥接模式相当于虚拟机和主机在同一个真实网段 VMWare充当一个集线器功能 一根网线连到主机相连的路由器上 所以如果电脑换了内网 静态分配的ip要更改 图如下 NAT 网络地址转换模式 NAT模式和桥接模式一样可以
  • 【华为OD机试c++/python】最少线段覆盖【 2023 Q1

    华为OD机试 题目列表 2023Q1 点这里 2023华为OD机试 刷题指南 点这里 题目描述 给定坐标轴上的一组线段 线段的起点和终点均为整数并且长度不小于1 请你从中找到最少数量的线段 这些线段可以覆盖住所有线段 输入描述 第一行输入为
  • A-小美种果树(二分)-- 牛客周赛 Round 12

    输入 1 2 10 输出 6 解析 二分 注意两端端点L R的取值 include
  • html怎样设置同意服务条款,用户使用协议及服务条款.html

    用户使用协议及服务条款 axure utils getTransparentGifPath function return resources images transparent gif axure utils getOtherPath
  • 智慧煤矿技术理论篇1-5G与WiFi6技术

    5G VS WiFi6 5G技术 第五代移动通信技术 英语 5th generation mobile networks或5th generation wireless systems 5th Generation 简称5G或5G技术 是最
  • 数据结构-栈和队列(C/C++)

    栈和队列 一 实验目的 熟练掌握栈以及队列的结构特点 二 实验内容 运用栈和队列的结构特点完成相应的基本操作和实例 三 实验步骤 过程以及运行程序截图 栈 问题1 栈的基本操作 在插入栈元素的时候做一个统一输入 达到一次性任意输入0 Sta
  • 【每日一练】79—CSS实现扫描二维码动画

    二维码的应用越来越普通 加个好友 付个款 做个核酸 想去一个地方 还要扫个场所码 总之 需要二维码的地方越来越多 因此 在这样的大环境里 如何让你的码与众不同 引人注意 就显得非常重要 今天我们就来练习一个二维码的动画效果 具体效果如下 看
  • html5自带属性验证表单必填

    html5自带属性验证表单必填 2014年02月25日 Html5 共 366字 字号 小 中 大 6条评论 阅读 6 515 次 为了防止恶意注册 通常会验证表单必填 实现方法以js为主 略微麻烦 今天才发现 html5如今已自带验证表单
  • 注册表常用键值意义

    HKEY CURRENT USER Software Policies Microsoft Internet Explorer Control Panel Internet Explorer选项类 HomePage dword 000000
  • IDEA下java程序的简单调试

    一 本次任务实现的是一个java的程序调试 首先本次进行调试的一个程序是实现从1累加到100的功能 是在IDEA下进行编写的 如图所示 将其运行之后得到的结果如图所示 把第12行的输出语句给取消掉注释之后再运行一次得到的结果如图所示 这里由