idea dubge 详细

目录

一、概述

二、debug操作分析

1、打断点

2、运行debug模式

3、重新执行debug

4、让程序执行到下一次断点后暂停

5、让断点处的代码再加一行代码

6、停止debug程序

7、显示所有断点

8、添加断点运行的条件

9、屏蔽所有断点

10、把光标移到当前程序运行位置

11、单步跳过

12、可以跳入方法内部的执行一行代码操作

13、跳出方法

14、直接执行到光标所在位置

15、在控制台改变正在debug的数据


一、概述

  • debug调试也叫断点调试
  • 在程序的某一行打上断点,则在debug模式下运行到断点位置时会暂停,便于程序员观察代码的执行情况
  • 学会debug,有助于在程序运行未达到理想情况时,对程序的各个流程进行分析
  • 本文只详细描述了debug的一些基本的常用操作,如果有缺漏欢迎评论区留言~

二、debug操作分析

1、打断点

  • 在程序的某一行位置,数字右边的空白部分使用鼠标左键点击一下,出现红点即为打上了一个断点

2、运行debug模式

  • 方式一
    • 选中要进行debug的程序,点击右上角的debug按钮

  •  方式二
    • 在要进行debug的程序处右键,选中下图选项

3、重新执行debug

  • 点击下图按钮,会关闭当前debug的程序并重新启动debug

4、让程序执行到下一次断点后暂停

  • 点击下图的按钮,debug会继续运行程序,直到遇到下一次断点后暂停

  •  举例
    • 下图是一个循环操作,在打断点的位置点击上面说的按钮,相当于再循环一次,到代码第9行时停止

5、让断点处的代码再加一行代码

  • 点击下图的加号,可以在断点处加一行代码,比如下图中的count++即为新添加的代码
    • 选中count++,右键点击Edit可以编辑该代码
    • 选中该行代码(count++),点击加号下面的减号,可以删除该行代码

  • 选中下图的眼镜,变为分屏操作


举例

  • 下图是没添加额外代码之前的截图

  •  添加一句count++,并点击左边红色框中的按钮,执行到下一次断点,即循环了一次

  •  效果和运行步骤见下图 

6、停止debug程序

  • 点击下图按钮停止debug程序
  • 注意
    • 运行的如果是javaSE项目,点一下就停止
    • 运行的如果是javaWeb项目,需要点两下
      • 第一下停止代码的当前线程
      • 第二下停止服务器

7、显示所有断点

  • 点击下图按钮,会显示所有断点

  •  点击后出现下图所示界面,可以添加断点运行的条件,见下一条功能解释

8、添加断点运行的条件

  • 选中断点,右键后即可编辑断点运行的条件
    • 满足条件时程序才会在该断点处停下

  •  比如添加i>=5,重新debug后的效果如下图所示

  •  此时会发现第7条显示所有断点信息处,可以看到下图效果

9、屏蔽所有断点

  • 点击下图按钮,可以屏蔽所有断点

  • 屏蔽前
  • 屏蔽后
  •  屏蔽的断点在debug的时候不会运行
    • 如果程序调试后觉得没问题了,可以屏蔽掉所有断点继续运行程序查看效果

10、把光标移到当前程序运行位置

  • 点击下图按钮后,会把鼠标光标移动到当前程序运行位置
    • 当程序代码量很大的时候,可以通过该按钮快速定位到程序运行位置

  •  如下图所示
    • 假设程序运行到第9行断点处,鼠标光标在第11行,点击该按钮后光标就会移动到第9行

11、单步跳过

  • 点击下图按钮,会一行一行执行自己编写的代码
    • 如果碰到方法,该按钮不会进入到该方法内部
    • 快捷键F8 

12、可以跳入方法内部的执行一行代码操作

  • 下图中的蓝色箭头和红色箭头都可以执行一行代码,如果遇到方法时会进入方法内部,区别在于
    • 蓝色箭头只会跳进自己写的方法,如果是系统已经写好的方法,蓝色箭头无法跳入该方法
    • 红色箭头不管是自己写的方法,还是系统已经定义好的方法,都可以跳入方法内部

  •  如下图所示
    • ArrayList的add方法是系统已经写好的,蓝色箭头无法跳入方法内部,但是红色箭头可以跳入方法内部
    • printMessage()是自定义方法,红色和蓝色箭头都可以跳入该方法内部

13、跳出方法

  • 下图的两个按钮都可以跳出方法
    • 第二个按钮是关闭窗口的意思,同样可以起到跳出方法的作用
    • 在进入方法内部的时候使用这两个按钮

14、直接执行到光标所在位置

  • 点击下图的按钮,程序会执行到光标所在的位置
    • 前提是光标前面没有断点,否则程序还是会在光标前面的断点处暂停

15、在控制台改变正在debug的数据

  • 在控制台选中某个变量,右键点击Set Value可以改变该变量的值
    • 如果想测试某个地方的数据如果是正确的会是什么效果,可以手动更改该处变量的值

补充:debug调试看代码时,一般用F9跳到下一个断点,打断点的目的是你想看程序执行到这个位置时会有什么效果,或者是到达断点的位置后再继续往下看实现的过程;用F7去跳进方法内部,看具体的实现细节;用F8去看当前位置代码往下的执行情况(不跳入具体方法的内部)

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

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

相关文章

访问 github 问题解决方法

一、macOS版 PS. Windows 版的还没试,不过应该也差不多 1.基本信息 硬件:MacBook Pro 2017 (A1707) 系统:macOS 13.6 (Ventura) 应用:SwitchHosts 4.1.2 (Releases oldj/SwitchHosts GitHub) hosts内容网站:ht…

迅为RK3588开发板Android12单摄方案设备树修改

打开 3588-android12/kernel-5.10/arch/arm64/boot/dts/rockchip/topeet_camera_config.dtsi 设备树,此设备树中对底板上的摄像头接口进行了配置,如下图所示: 如果想要使用 J1 接口打开摄像头 OV5695 或者 摄像头 OV13850,只需要在…

pytorch代码实现之动态蛇形卷积模块DySnakeConv

动态蛇形卷积模块DySnakeConv 血管、道路等拓扑管状结构的精确分割在各个领域都至关重要,确保下游任务的准确性和效率。 然而,许多因素使任务变得复杂,包括薄的局部结构和可变的全局形态。在这项工作中,我们注意到管状结构的特殊…

vue中动态设置source标签

项目中有个视频播放,路径通过接口返回,而且不带后缀,并不确定是什么类型的视频文件,所以要通过source标签去进行设置. 问题:当video中存在source标签的时候,浏览器渲染之后会自动去获取地址,即便地址改变,浏览器也不会再去获取地址。 解决方…

3、Flowable任务分配和流程变量

任务分配和流程变量 1.任务分配 1.1 固定分配 固定分配就是我们前面介绍的,在绘制流程图或者直接在流程文件中通过Assignee来指定的方式 1.2 表达式分配 Flowable使用UEL进行表达式解析。UEL代表Unified Expression Language,是EE6规范的一部分.Flo…

无蓝光的护眼灯有哪些品牌?分享五款优秀的无蓝光护眼台灯

现在儿童近视率越来越高了,用眼过度疲劳是导致近视的主要因素,学习环境的光线是否合适,都会直接影响用眼的疲劳程度。所以给孩子营造一个良好的学习环境非常重要!为大家推荐五大品牌的护眼台灯。 1.书客护眼台灯L1 推荐指数&…

jenkins pipeline使用

1、jenkins全局配置 1.1、maven配置 1.2、jdk配置 1.3、git配置 2、构建环境配置 2.1、安装时间插件 Date Parameter 2.2、Git Parameter 插件安装 3、pipeline如下 pipeline {agent anyenvironment {image_name "192.168.122.150/ken-test/price-service:${date}&…

【大数据】Kafka 入门简介

Kafka 入门简介 1.什么是 Kafka2.Kafka 的基本概念3.Kafka 分布式架构4.配置单机版 Kafka4.1 下载并解压包4.2 启动 Kafka4.3 创建 Topic4.4 向 Topic 中发送消息4.5 从 Topic 中消费消息 5.实验5.1 实验一:Python 实现生产者消费者5.2 实验二:消费组实现…

最新AI创作系统ChatGPT源码+搭建部署教程+支持GPT4.0+支持ai绘画(Midjourney)/支持Prompt

一、AI创作系统 SparkAi创作系统是基于OpenAI很火的ChatGPT进行开发的Ai智能问答系统AI绘画系统,支持OpenAI GPT全模型国内AI全模型。本期针对源码系统整体测试下来非常完美,可以说SparkAi是目前国内一款的ChatGPT对接OpenAI软件系统。那么如何搭建部署…

FPGA 图像缩放 1G/2.5G Ethernet PCS/PMA or SGMII实现 UDP 网络视频传输,提供工程和QT上位机源码加技术支持

目录 1、前言版本更新说明免责声明 2、相关方案推荐UDP视频传输--无缩放FPGA图像缩放方案我这里已有的以太网方案 3、设计思路框架视频源选择ADV7611 解码芯片配置及采集动态彩条跨时钟FIFO图像缩放模块详解设计框图代码框图2种插值算法的整合与选择 UDP协议栈UDP视频数据组包U…

使用MinIO Client客户端实现MySQL数据库跨机备份

安装Minio客户端 下载Linux版客户端文件 wget https://dl.min.io/client/mc/release/linux-amd64/mc -P /usr/local/bin/ chmod x /usr/local/bin/mc 添加目标对象 # 给Minio服务【用户名:yourusername,密码:youruserpassword】设置一个…

让iPhone用电脑的网络上网

让iPhone用电脑的网络上网,可以按照以下步骤操作: 在iPhone上找到并点击“设置”选项,进入“蜂窝移动网络”。打开“个人热点”选项。此时下方的弹出对话框会显示“仅USB”。用数据线将你的iPhone与电脑相连,并在电脑上打开“控制…

【Linux】文件IO基础知识——下篇

目录 一,stderr 2. errno全局变量 二,文件系统 1. 软链接 2. 硬链接 三,静态库 1. 制作静态库 2. 自动化生成静态库 & 自动发布库与头文件 3. 如何使用第三方库 法(一):修改系统文件库 …

液压自动化成套设备比例阀放大器

液压电气成套设备的比例阀放大器是一种电子控制设备,用于控制液压动力系统中的液压比例阀1。 比例阀放大器通常采用电子信号进行控制,以控制比例阀的开度和流量,以实现液压系统的可靠控制。比例阀放大器主要由以下组成部分: 驱动…

julia 笔记/论文辅助笔记:T2vec 轨迹处理

deepgtt/harbin/julia/Trip.jl at master boathit/deepgtt (github.com) 1 导入和声明 using HDF5, CSV, DataFrames, Dates, Sockets # 引入几个模块,这些模块用于文件操作、数据处理、日期处理、网络操作等功能。using Distances: euclidean # 从Distances模块…

如何修改模型颜色

1、模型材质颜色介绍 在3D模型中,材质(Material)是指表面质感的特性,包括颜色、光泽、透明度等属性。其中,颜色是最基本的属性之一,它决定了物体表面的外观和感觉。 在现代计算机图形学中,通常…

常用redis-lua脚本

REDIS控制台 1. 进入控制台 E:\soft\Redis-x64-5.0.14.1\redis-cli.exe -h 127.0.0.1 -p 6379 -a password常用redis-lua脚本 在REDIS控制台输入 1. 查询以xxx为前缀的key的数量 local prefix ARGV[1] local keys redis.call(KEYS, prefix .. *) return #keys对应EVAL脚…

网络安全是什么?一文认识网络安全

一、网络安全 1.概念 网络安全从其本质上讲就是网络上的信息安全,指网络系统的硬件、软件及数据受到保护。不遭受破坏、更改、泄露,系统可靠正常地运行,网络服务不中断。 (1)基本特征 网络安全根据其本质的界定&#…

JS 数组 splice 用法

JS数组的 splice() 方法是用于向/从数组中添加/删除元素。它的语法如下: array.splice(start, deleteCount, item1, item2, ...)其中, start:从该索引开始修改数组(从0开始计数)。如果索引为负数,则从倒数…