Idea断点调试(debug)详解
目录
- 1.打断点,并启动
- 2.按钮介绍
- 1.测试程序
- 2.Step Over
- 3.Step Into
- 4.Force Step Into
- 5.Step Out
- 6.Drop Frame
- 7.Run to Cursor
- 8.Evaluate Expression
- 9.Resume Program
- 10.Stop
- 11.View BreakPoints
- 12.Mute BreakPoints
- 3.断点分类
- 1.方法断点
- 2.属性断点
- 3.异常断点
- 4.条件断点
- 5.流断点
- 6.多线程断点
1.打断点,并启动
打断点:
鼠标左键点击这里就会出现一个红点标志 (有各种形状,后续解释),就打上了一个断点。
启动:
- 对于已经运行过的程序,直接点击,小虫子就能启动
对于没有运行过的程序,找到程序入口(main方法)前面的三角形 ,鼠标右键启动
启动后,当我们的程序执行到断点程序处,就会出现调试界面,如下:
如果没有出现调试界面,那就是说明:根本没有执行断点处的程序。
2.按钮介绍
1.测试程序
先写一个简单的类来做测试,如下:
public class TestDemo {public static int add(int a, String b) {int c = Integer.parseInt(b);return a + c;}public static char sub(int d, int e) {char res = (char) Math.abs(d - e);return res;}public static void main(String[] args) {String b = "45";int a = 13;int sum = add(a, b);int d = 17;int e = 89;char f = sub(17, 89);}
}
接着,找个地方打上断点(确保程序会执行的地方)打上断点:
然后开始debug。
2.Step Over
步过:
作用:
- 一行代码一行代码地往下执行
- 不会进入到路经的方法里面
3.Step Into
步入:
作用:
- 进入我们自定义的方法
- 不会进入其他类库的方法
4.Force Step Into
强制步入:
作用:
- 可以进入更深层次的方法
- 自定义类库或者其他类库的方法都能进入
5.Step Out
步出:
作用:
- 从对应的方法中出来,返回上一层
6.Drop Frame
回退断点:
作用:
- 当进入到更深层的方法后才能使用
- 当我们错过了debug的位置时使用
- 这个按钮可以让焦点回到调用方法之前,然后再次debug一次方法(给你犯错重来的机会)
- 对于数据库增删改操作无法回退
注意: 此回退仅限于,那个方法还没有调用完,否则是无法回去的再次debug那个方法的,只能重新启动debug。
7.Run to Cursor
跳到光标处
作用:
- 将debug执行位置跳转到光标位置,然后继续debug
- 只能往后面跳,如果光标在debug执行位置前面,就会终止debug
8.Evaluate Expression
表达式计算:
作用:
- 获取已经debug过的参数的值
- 计算已经debug过的参数的值(表达式、方法)
9.Resume Program
恢复程序:
作用:
- 当有多个断点时使用
- 直接跳转到下一个断点的位置
10.Stop
停止程序:
作用:
- 停止debug
- 会继续跑完程序
11.View BreakPoints
查看断点:
作用:
- 查看所有断点,并进行相关设置
12.Mute BreakPoints
禁用断点:
作用:
- 暂时禁用掉所有断点,放行程序
3.断点分类
1.方法断点
给方法打上断点之后,当我们的debug到调用该方法的位置的时候,会直接跳转到方法处(直接Step Out就会跳转)。
2.属性断点
断点右键可以进行设置:
3.异常断点
添加异常断点流程:
作用:
- 在全局打上异常(上述添加的是堆栈溢出异常)
- 只要哪里出现了堆栈溢出异常,程序就会跳转到那个地方,方便快速找到异常位置
- 可在run程序抛出异常后,根据异常去打断点,然后进行调试
4.条件断点
右键断点,设置条件,只有当满足条件时,才会进入该断点程序停留,否则就直接往下面执行程序。
5.流断点
调试流程:
代码:
public static void main(String[] args) {Stream.of(10, 30, 50, 90, 40).mapToLong(e -> e*e ).filter(e -> e > 2500).forEach(System.out::println);}
断点调试:
作用:
- 可以查看流的工作流程
6.多线程断点
调试流程:
代码:
public static void main(String[] args) {new Thread(() -> {System.out.println();System.out.println("thread1 is running");StringBuilder sb = new StringBuilder(".");for (int i = 0; i < 10; i++) {try {Thread.sleep(100);System.out.print(sb.append(".").toString());} catch (InterruptedException e) {e.printStackTrace();}}}, "thread1").start();new Thread(() -> {System.out.println();System.out.println("thread22 is running");StringBuilder sb = new StringBuilder(".");for (int i = 0; i < 10; i++) {try {Thread.sleep(100);System.out.print(sb.append(".").toString());} catch (InterruptedException e) {e.printStackTrace();}}}, "thread22").start();new Thread(() -> {System.out.println();System.out.println("thread333 is running");StringBuilder sb = new StringBuilder(".");for (int i = 0; i < 10; i++) {try {Thread.sleep(100);System.out.print(sb.append(".").toString());} catch (InterruptedException e) {e.printStackTrace();}}}, "thread333").start();}
断点:
查看输出:
作用:
- 将 suspend 设置为 Thread
- 这样就可以单个线程单个线程地调试,而不会出现,线程之间争抢资源的情况(线程不断切换)
Idea断点调试(debug)详解相关推荐
- Windbg调试命令详解
Windbg调试命令详解 发表于2013 年 8 月 23 日 转载注明>> [作者:张佩][原文:http://www.yiiyee.cn/Blog] 1. 概述 用户成功安装微软Win ...
- Visual Studio Code (VSCode) 之 C/C++ 调试配置详解
准备 默认情况下,VSCode仅仅内置了对node.js运行时的调试支持,只可以直接调试JavaScript.TypeScript和任何其他翻译为JavaScript的语言.其他语言的调试支持,都 ...
- php和js调试,JS调试使用详解
这次给大家带来JS调试使用详解,JS调试的注意事项有哪些,下面就是实战案例,一起来看一下. 试想一下:出现了某个bug,有人用几分钟就搞定了,有人用了半天或者一天都找不到原因所在.你愿意当前者还是后者 ...
- 断点调试 debug模式 1006
断点调试 debug模式 1006 打断点 在需要监视的位置打断点 调试 F5可以开启调试 或者 调试>启动调试 视频 演练调试模式 c sharp 1006 - 西瓜视频 https://ww ...
- F12调试调试窗口详解
目录 前言 一.F12调试参数详解 1.Elements: 2.Network: Name: headers: Preview: Response: Timing: 3.console: 4.Sour ...
- 电路板选择、焊接和调试技巧详解(7)
原文地址::http://www.360doc.com/content/13/0513/17/11723777_285167796.shtml 相关文章 1.电路板选择.焊接和调试技巧详解(2)--- ...
- Eclipse 断点调试(Debug), 使用方法
1.问题:Java学习中,使用Eclipse时,会遇到各种各样的问题,对内部底层的运行,或运行顺序不同,会导致不能真正理解,灵活运用. 使用debug断点调试,可以完成,程序每一步一步是怎么样运行的, ...
- oracle中调试存储过程,详解Oracle调试存储过程
详解Oracle调试存储过程 一 调试关键步骤 1.在要调试的存储过程右键,选择编辑以进行调试,截图如下: 2.点击小瓢虫,弹出调试窗口,截图如下: 3.输入7839员工编号,点击确认,进行调试,截图 ...
- 这可能是最详细的 Windows Debug 详解 了
Debug概览 Debug是什么? debug是Windows 16位或者32位机器上的一款调试工具.也就是说,在WindowsXP及以前的机器上都有debug,直接Win+X debug就可以调出: ...
- VScode调试Linux详解
在Linux上通常使用gdb命令行调试,但该方式调试不太直观,且命令行长时间不用,容易忘记,不如GUI直观和容易上手,下面介绍基于GUI的方式调试Linux. 一.Linux调试GUI方案简介 1) ...
最新文章
- python查找文件夹下的文件,python 查找文件夹下所有文件 实现代码 -电脑资料
- 在IntelliJ IDEA中使用git
- asp.net中让GridView加上垂直流动条并让标头不动
- Mybatis核心配置文件xml详解
- python教程程序_Python如何发布程序的详细教程
- 方法引用、构造器引用和数组引用
- 【百度地图API】如何激发手机的高分辨率
- continue 与break 的区别
- 1年内从2000涨到13000的成长经验分享
- Java EE 6权威指南:第4版.基础篇
- Linux 磁盘无损扩容
- 锐捷校园网:小米mini路由刷Padavan固件实现wifi上网
- 今天你对我爱搭不理, 明天我让你高攀不起
- Linux系统的应用软件流程图绘制软件yEd
- SyntaxError: invalid character in identifier
- 前端开发最基本的3个语言
- 帝国CMS对接百度智能小程序的方法
- 元素布局之排排坐、对齐齐
- 用户账号管理和组管理
- Flink 1.10 版本之前如何生成 Watermark