1. Debug 简介

2. 开启 Deubg

2.1 Debug 模式下的界面

2.2 开启 Debug

3. Debug 中常用调试按钮

3.1 跳转到当前执行代码的行

3.2 步过

3.3 步入

3.4 强制步入

3.5 步出

3.6 回退断点处

3.7 定位到光标处

3.8 计算表达式

4. 查看参数

4.1 参数所在行后面显示

4.2 光标悬浮查看

4.3 在 Variables 里查看

4.4 在 Watches 里查看

5. 条件断点

6. Debug 服务设置按钮

6.1 执行到下一个断点处直到结束

6.2 断点静音

6.3 查看/清除断点

6.4 返回到第一个断点的地方

7 多线程调试


1. Debug 简介

为何要用 Debug?

眼看 12 月马上就要过去了,张三正在大学宿舍床上躺着,此刻的他既开心又发愁。

开心的是马上就能和女朋友一起跨年了,发愁的是自己 java 期末大作业一堆错误。

张三英语不好,看不懂控制台的报错语句,所以越想越烦躁。

突然,张三好像有了灵感,打开 IDEA 兴奋地敲了起来。正参与五黑的室友见状,不免有些好奇,都跑去看他的电脑:

原来张三正在复制粘贴一堆打印语句。一室友实在看不下去了,问他:“你调试程序为啥不用 Debug ?”

“你写这么多 system 语句,不麻烦吗?最后交作业,你还要把这些打印语句一个个都删掉,太浪费时间了。”

所以我们写程序不要一遇到问题就写一堆 system 打印语句,真的很浪费时间。

而使用 Debug 可以追踪程序的执行过程,快速定位程序异常的位置,帮助我们快速找到出错的代码。

2. 开启 Deubg

2.1 Debug 模式下的界面

我们先看下 IDEA 中 Debug 模式下的界面:

    1. 以 Debug 模式启动服务。在开发中,我一般会直接以 Debug 模式运行程序,方便随时调试代码。
    1. 断点,我们可以在行数栏左侧直接单击设置,也可以使用快捷键 Ctrl+F8 设置或者取消断点。
    1. Debug 窗口:当请求到达第一个断点后,Debug 窗口会被激活。
    1. 调试 Debug 按钮:我们在调试过程中主要使用这几个按钮,鼠标悬浮按钮上面可以显示快捷键。
    1. Debug 服务按钮:在这里我们可以开启、关闭 Debug 服务等。
    1. 方法区:这里会显示调试过程中执行的方法。
    1. 参数区:这里会显示当前断点前所有参数的值。

2.2 开启 Debug   先设置一个断点,然后以 Debug 模式运行:

注:我们还可以在执行程序的过程中添加/删除断点。

3. Debug 中常用调试按钮

3.1 跳转到当前执行代码的行

我们先在一个页面设置一个断点,然后再切换到其他页面,点击这个按钮,发现又跳转到了执行代码所在的行:

3.2 步过

步过就是一步一步往下走,跳过所有方法:

上面的例子中即便是遇到了 system 打印方法和 test1 方法,也会跨过去继续往下执行。

3.3 步入

在执行的过程中如果遇到了自定义的方法,可以进入方法内部,不会进入 JDK 类库中的方法。

上面的例子中,遇到了 system 方法会自动跨过去,但是遇到了自定义的方法,则会进入到方法中执行,等执行完则会返回到方法的调用处。

3.4 强制步入

不管遇到 JDK 的类库方法还是自定义方法,都会进入到方法中执行。

上面的例子中不管遇到了JDK 类库中的 system 方法还是自定义的 test1方法,都会进入到方法中执行。

3.5 步出

步出就是从进入的方法内部退回到方法调用处。

上面的例子中我们进入到了 test1 方法的内部,当点击步出按钮后,又回到了调用 test1 方法的地方。

3.6 回退断点处

回退断点处意思就是可以回退到指定方法的调用处。

上面的例子中我们依次执行了 test1、test2、method2 方法,但是我们可以选择直接回退到 test1 方法的调用处。

步出和回退断点的区别:

  • 都是回到方法的调用处
  • 步出只能回到当前方法的调用处
  • 回退断点可以回到指定方法的调用处,前提是该方法已经被执行过。

3.7 定位到光标处

如果我们写的代码有几百行,一步一步往下执行也比较费时间。这时候我们可以先把光标放到一个指定位置,然后点击定位光标处按钮,这时候代码就会立即执行到光标处了。

上面的例子中我们把鼠标光标移动到了下面某一行,然后点击定位光标处按钮,代码立刻执行到了这一行。

3.8 计算表达式

计算表达式可以帮助我们计算一些表达式的返回值。

从上面的例子中可以看出,我们可以在调用某些方法之前使用一些自定义参数去计算该方法的返回值。

4. 查看参数

4.1 参数所在行后面显示

4.2 光标悬浮查看

光标悬浮到参数上,显示当前变量的信息,我经常使用这种方法,特别方便。

4.3 在 Variables 里查看

这里显示当前方法里的所有变量。

4.4 在 Watches 里查看

在 Watches 里,点击 New Watch,输入需要查看的变量:

5. 条件断点

有时候我们代码中会包含很多 for 语句,但是使用断点调试的时候会执行很多次。这时候我们可以选择断点,鼠标右键设置一个条件,只有满足该条件时,断点才会执行到此处。

上面的例子中我们给断点设置一个条件:i==50,所以以 Debug 模式运行该程序的时候我们发现此时 i 就是50。

6. Debug 服务设置按钮

6.1 执行到下一个断点处直到结束

该按钮的作用:如果下面有断点,就跳转到下一个断点处。如果没有,程序就执行结束。

6.2 断点静音

有时候我们在执行到某一步的时候已经知道了结果,但是后面还有一堆断点。我想让这些断点失效,但是第二次跟踪我还想用这些断点,这时候就可以使用断点静音

6.3 查看/清除断点

我们在执行完代码后要清除所有断点,但是一个个去清除太浪费时间,这时候就可以使用这个按钮查看所有设置的断点,或者清除所有断点。

6.4 返回到第一个断点的地方

代码执行到某一行想返回到第一个断点处:

7 多线程调试

因为 CPU 执行线程的顺序是随机的,但是我们使用断点调试可以自定义执行下一个线程。

首先将两个线程的断点都设置成线程模式:

然后在方法区选择指定的线程去执行:

在 IDEA 中使用 Debug,简直太爽了。详细图文,博主制作了小视频教你如何使用 Debug相关推荐

  1. 用这个在电脑上玩刺激战场国际服爆打丧尸简直太爽了

    刺激战场国际服怎么玩?刺激战场国际服正式服前几天上线了全新的丧尸模式:破晓生还玩家在该模式中会遭遇生化危机中的丧尸和boss.玩家可以在进入游戏的时候可以选择是否出现丧尸.不得不说添加的丧尸玩法玩起来 ...

  2. 在 IDEA 中使用 Debug,简直太爽了

    1. Debug 简介 为何要用 Debug? 眼看 12 月马上就要过去了,张三正在大学宿舍床上躺着,此刻的他既开心又发愁. 开心的是马上就能和女朋友一起跨年了,发愁的是自己 java 期末大作业一 ...

  3. Python制作连连看脚本工具,全程自动,不需要你动,简直太爽了

    最近女朋友在玩连连看,玩了一个星期了还没通关,真的是菜. 我实在是看不过去了,直接用python写了个脚本代码,一分钟一把游戏. 快是快,就是联网玩容易被骂,嘿嘿~ 直接上代码 模块导入 import ...

  4. 十几套JavaWeb项目,拿去当毕业设计简直太爽了(源码)

    军鑫爱编程的个人空间_哔哩哔哩_Bilibili 1.基于web的图书管理系统设计与实现 图书管理系统就是利用计算机,结合互联网对图书进行结构化.自动化管理的一种软件,来提高对图书的管理效率.本系统采 ...

  5. 安卓专属刺激战场M416二、三指灵敏度,网友:配合6倍镜压枪简直太爽了

    刺激战场M416灵敏度怎么调?刺激战场二.三指怎么压枪?M416这步枪算是目前我最喜欢用的枪了,虽然经过了削弱,但是还是强,什么scar在M416面前都是渣.但是M416是一把很神奇的枪,因为它跟其他 ...

  6. 电路中滤波电容和退耦电容_超详细图文解析,电容器在电路中的27种作用

    1.滤波电容 滤波电容接在直流电压的正负极之间,以滤除直流电源中不需要的交流成分,使直流电平滑,通常采用大容量的电解电容,也可以在电路中同时并接其它类型的小容量电容以滤除高频交流电. 2.退耦电容 退 ...

  7. android zuomian app,安卓手机中必备的五个黑科技App,没装的简直太可惜了

    原标题:安卓手机中必备的五个黑科技App,没装的简直太可惜了 方片收集 方片手机是一款资源丰富的收集资料的利器,它支持图片.视频.网站等多种手机资源,它的界面非常的简单,可以让人很好的静下心来阅读. ...

  8. 10 行 Python 代码,批量压缩图片 500 张,简直太强大了

    这几天,我在用 Github page + hexo 搭建个人网站,为了延续风格,就想把配图与文章一起迁移过去.这时候就出现了一个难题:我所用的图片都是高清大图,放到网站上会严重拖慢加载速度.因此,需 ...

  9. vs code保存自动格式化代码及eslint/tslint修复-太爽(丝滑般的感觉)

    现在没有前后端分离的开发模式都不好意思跟同行交流.前后端分离的好处这里就不再赘述了. 本司开发的系统是基于Angular(ng zorro),TypeScript,后台采用Spring Boot.写前 ...

最新文章

  1. boost::asio使用UDP协议通信源码实现
  2. 贪吃蛇游戏的C++代码
  3. java-模拟存放String类型数据的栈
  4. JDK的安装与环境变量配置
  5. 论文浅尝 | emrKBQA: 一个面向临床医疗问答的KBQA数据集
  6. Gradle学习之使用java plugin
  7. 邮件误删不用怕,试试这个方法帮你找回来
  8. Day3-字符串-数组-正则表达式
  9. 纯软件归档产品的好处
  10. MySQL之数据库编程(了解语言结构)
  11. 女人长点心就收藏它肯定会用到的
  12. 聊聊新股市盈率的那些事
  13. 【模型开发】评分卡应用
  14. canvas中文显示乱码 html5_如何使用HTML5 canvas绘制文字
  15. Python3+Scrapy通过代理爬取携程酒店数据
  16. 无盘疑难杂症的处理和网络的设置(转)
  17. 请问如何查看我的ubuntu是32位的还是64位的
  18. 三星30pin引脚_led屏接口定义20PIN-30PIN
  19. react+ts搭建
  20. 11.2 NOIP模拟赛 (morning)

热门文章

  1. 下笔如有神:这是一个基于营销行业的 AI 技术实践
  2. 企业一般用什么活动直播平台
  3. <数据库> 牛客SQL54 去掉最大最小值 再求均值
  4. ensp系统服务器是哪个,ensp模拟器上的云是服务器吗
  5. 【CSS】物理像素 DP(device pixels)、物理像素比(DPR)、px 逻辑像素(CSS像素)、DPI、PPI 的概念解析 以及1px问题解决方法
  6. 网购海外代购真假?京东阿里之路
  7. Compose Desktop 初体验之绘制
  8. 【从零开始的嵌入式生活】LinuxC语言——软件包管理和shell
  9. 《A_Pancers》第一次作业:团队亮相
  10. CSS综合示例(博雅首页)