导读        

前天面试了一个985高校的实习生,问了他平时用什么开发工具,他想也没想的说IDEA,于是我抛砖引玉的问了一下IDEA的调试用过吧,你说说怎么设置断点条件?那孩子懵了,想了好一会对我说没用过,甚至都没听说过这个。

作为一名资深的老司机,IDEA调试可以说是家常便饭,如果不会debug,我都不信你读过源码,就别和我说原理了,直接pass掉。

        基本界面        

IDEA的Debug运行模式如下图:

以Debug模式启动服务,左边的一个按钮则是以Run模式启动。在开发中,我一般会直接启动Debug模式,方便随时调试代码。

断点:在左边行号栏单击左键,或者快捷键Ctrl+F8 打上/取消断点,断点行的颜色可自己去设置。

Debug窗口:访问请求到达第一个断点后,会自动激活Debug窗口。如果没有自动激活,可以去设置里设置。

调试按钮:一共有8个按钮,调试的主要功能就对应着这几个按钮,鼠标悬停在按钮上可以查看对应的快捷键。

服务按钮:可以在这里关闭/启动服务,设置断点等。

方法调用栈:这里显示了该线程调试所经过的所有方法,勾选右上角的[Show All Frames]按钮,就不会显示其它类库的方法了,否则这里会有一大堆的方法。

Variables:在变量区可以查看当前断点之前的当前方法内的变量。

  Watches:查看变量,可以将Variables区中的变量拖到Watches中查看。

        变量查看        

在调试过程中往往需要观察变量的变化来判断业务逻辑,我们可以在以下的四个地方观察。

最常用的变量的观察区域variables

IDEA中最人性化的地方之一,会将变量的值阴影显示在变量的后面。

watch区域,眼镜的形状,一般不会展开。如下图:

点击'+'号可以新增需要观察的变量,点击'-'号可以删除。

鼠标悬停在变量上也会出现变量的值,点击展开即可查看。

        计算表达式        

在调试业务逻辑的时候一般总会遇到某个条件或者某个变量的计算值的还不知道的情况下就需要判断下一行代码,那么此处就需要用到计算表达式的功能。计算表达式有两种方法,如下:

选择需要计算的代码,鼠标右键---->Evaluate Expression--->Evaluate即可计算。

直接点击计算器形状控件即可弹出计算的窗口,将代码复制进去即可,注意复制进去的代码一定要符合逻辑,比如局部变量一定要是已经声明的。

        断点条件设置        

对于新手要看Spring源码的话,再遇到调试UserService的doGetBean的方法时可能要崩溃,因为doGetBean在容器启动的时候可能会被调用几十次,你把断点打在doGetBean方法体中能让你生不如死。

1. 设置断点条件有两种方式:

直接在断点上右键,添加condition条件即可。

view breakpoints(ctrl+shift+F8)显示所有的断点,在condition中添加条件即可。

2. 异常断点设置的方式

设置了异常断点后,比如空指针异常,在程序出现需要拦截的异常时会自动定位到指定的行。如下图:

① ctrl+shift+F8显示所有断点,点击+号添加Java Exception Breakpoints。

debug运行,一旦有代码出现该异常,会自动定位到指定代码。

        线程切换        

通常我们在调试的时候,一个请求过来被拦截了,此时想要发起另外一个请求是无法重新发的,因为另外一个请求被阻塞了,只有当前线程执行完成之后才会走其他的线程。在IDEA中可以改变一下阻塞级别,有两种方法:

1. 断点上右键--->选择Thread---->Make Default,如下图:

2. 显示所有断点(crtl+shift+F8),选中某一个断点,选择Thread,Make Default即可。如下图:

设置了阻塞级别,此时就可以在线程切换了,如下图:

        强制抛异常        

这是IDEA 2018年加入的新功能,可以直接在调试中抛出指定的异常。使用方法跟上面的弃栈帧类似,右击栈帧并选择Throw Exception,然后输入抛异常的代码,比如throw new NullPointerException,操作如下图:

        强制返回        

这是IDEA2015版时增加的功能,类似上面的手动抛异常,只不过是返回一个指定值罢了。使用方法跟上面也都类似,右击栈帧并选择Force Return,然后输入要返回的值即可。如果是void的方法那就更简单了,连返回值都不用输。如下图:

完!

最牛逼的Java编辑器,没有之一!相关推荐

  1. 最牛逼的 Java 日志框架,还不学习。。。

    最牛逼的 Java 日志框架,性能无敌,横扫所有对手- Logback 算是JAVA 里一个老牌的日志框架,从06年开始第一个版本,迭代至今也十几年了.不过logback最近一个稳定版本还停留在 20 ...

  2. 最牛逼的java代码_分享史上java最牛逼 最简短的代码-Go语言中文社区

    也欢迎大家转载本篇文章.分享知识,造福人民,实现我们中华民族伟大复兴! 确实是12306的最核心代码呀 确实牛public class Test{    static{       System.ou ...

  3. 最牛逼的 Java 日志框架,性能无敌,横扫所有对手.....

    欢迎关注方志朋的博客,回复"666"获面试宝典 来源:juejin.cn/post/6945753017878577165 Logback 算是JAVA 里一个老牌的日志框架,从0 ...

  4. 最牛逼的java代码_分享史上java最牛逼,最简短的代码

    确实是12306的最核心代码呀 alert("当前访问用户过多,请稍后重试!"); 确实牛 public class Test{ static{ System.out.printl ...

  5. 牛逼!java程序员必看经典书单,以及各个阶段学习建议!

    本文作者为优知学院创始人陈睿(mike),作者有10年以上技术&产品经验,曾任百度研发经理.携程定制旅游CTO. 优知学院,首家互联网技术结合产品学习社区.提供互联网技术.产品的入门指南.干货 ...

  6. C#之父牛逼还是Java之父牛逼?

    欢迎大家打口水战! C#后面有一个强大的微软,Java早已易主. C#如今一路飙升,各种特性.类库不断,让人应接不暇,很有活力:95年刚出道的Java就被世人戴上了诸多的光环,如今还是是风光依旧,金枪 ...

  7. 最牛逼的 Java 日志框架

    Logback 算是JAVA 里一个老牌的日志框架,从06年开始第一个版本,迭代至今也十几年了.不过logback最近一个稳定版本还停留在 2017 年,好几年都没有更新:logback的兄弟 slf ...

  8. 最牛逼的 Java 日志框架,性能无敌,横扫所有对手。。

    点击关注公众号,Java干货及时送达 作者:空无 链接:https://juejin.cn/post/6945753017878577165 Logback 算是JAVA 里一个老牌的日志框架,从06 ...

  9. 最牛逼的 Java 日志框架,性能无敌!

    点击上方☝码猿技术专栏 轻松关注,设为星标! 及时获取有趣有料的技术 Logback 算是JAVA 里一个老牌的日志框架,从06年开始第一个版本,迭代至今也十几年了.不过logback最近一个稳定版本 ...

最新文章

  1. openresty开发系列33--openresty执行流程之2重写赋值阶段
  2. leetcode 331. Verify Preorder Serialization of a Binary Tree | 331. 验证二叉树的前序序列化(栈解法)
  3. 并查集一般高级应用的理解
  4. 查了一晚上的资料,累啊。
  5. Codeforces 319C DP 斜率优化
  6. 数据库系统原理设计题和综合体
  7. Landsat-8 介绍
  8. 彼得·林奇的25条黄金规则
  9. html+css基础教程之html简介和元素
  10. 操作系统-课堂笔记-磁盘调度(南航)
  11. java毕业设计基于的高校教室申请管理系统mybatis+源码+调试部署+系统+数据库+lw
  12. 素数模同余式次数与其解数的关系
  13. 8086汇编(3、指令集)
  14. 如何选购一款优质的台式电脑电源?
  15. 微信云托管-填坑之旅
  16. 悦诗风吟网络营销的目标_悦诗风吟七彩泥膜术线上推广方案
  17. SS中添加多用户失败
  18. usb3.0 ssd 测试软件,对比评测告诉你USB3.0+SSD能否干掉HDD
  19. 【ACM_1】H - Line Gimmick
  20. 天美生物在美上市背后:财务报表存在重大缺陷,胡永卫持股34%

热门文章

  1. 数字电路硬件设计系列(十三)之HDMI电路设计
  2. Fluent求解器——亚松弛因子
  3. 用spss判断正态性检验的几种方法
  4. 外贸企业邮箱多少钱? 企业内部邮箱用什么安全? 企业邮箱怎么申请?
  5. 网课在线搜题公众号制作
  6. CACTI :有图无数据解决办法
  7. 大数据时代,python竟是最好的语言?
  8. 第三章 页表管理(Page Table Management)
  9. AfterShip陈龙生:如何把SaaS做成一门好生意?
  10. 容联云AI科学院研发先进KBQA能力,问鼎大规模中文知识图谱问答权威性测评