导读        

前天面试了一个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的方法那就更简单了,连返回值都不用输。如下图:

至此文章IDEA的一些调试技巧就介绍完了,不是很全,还有很多强大的功能没有介绍,如果读者觉得陈某写的不错,有所收获的帮忙点个赞,分享一下,谢谢!!!

大牛都会用的 IDEA 调试技巧!!!相关推荐

  1. idea debug调试_大牛都会用的 IDEA 调试技巧!!!

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

  2. 大牛都会用的IDEA调试技巧!!!

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

  3. iOS调试技巧(转载)

    IOS各种调试技巧豪华套餐(转载) 目录 前言 逼优鸡 知己知彼 百战不殆 抽刀断Bug 普通操作 全局断点(Global BreakPoint) 条件断点(Condational Breakpoin ...

  4. iOS各种调试技巧豪华套餐

    转载http://www.cnblogs.com/daiweilai/p/4421340.html#biyouji 目录 前言 逼优鸡 知己知彼 百战不殆 抽刀断Bug 普通操作 全局断点(Globa ...

  5. IOS各种调试技巧豪华套餐(好东西)

    目录 前言 逼优鸡 知己知彼 百战不殆 抽刀断Bug 普通操作 全局断点(Global BreakPoint) 条件断点(Condational Breakpoints) 打印的艺术 NSLog 开启 ...

  6. Javascript调试技巧整理

    整理一下网上看到的实用调试技巧! 1. 不要使用alert 首先,alert只能打印出字符串,如果打印的对象不是String,则会调用toString()方法将该对象转成字符串(比如转成[object ...

  7. 反调试技巧总结-原理和实现(1)(2)(3)(4)(5)(6)......

    反调试技巧总结-原理和实现 -------------------------------------------------------------------------------------- ...

  8. 运用spss modeler运用支持向量机_玻璃精雕机的调试技巧

    玻璃精雕机是一种运用数字控制的机床设备,与旧式的手艺机床比较,数控机床运用电脑绘图并编程,机床在加工时通过执行程序完结自动加工.玻璃精雕机通常是三轴规划,机床在运转时,读取程序数据并转化成电信号,由这 ...

  9. Chrome 中的 JavaScript 断点设置和调试技巧

    你是怎么调试 JavaScript 程序的?最原始的方法是用 alert() 在页面上打印内容,稍微改进一点的方法是用 console.log() 在 JavaScript 控制台上输出内容.嗯~,用 ...

最新文章

  1. 中下层确实没钱了,消费枯竭!?
  2. Python程序设计题解【蓝桥杯官网题库】 DAY5-基础练习
  3. 【开发环境】Windows 安装 PyCharm 开发环境 ( 下载 PyCharm | 安装 PyCharm | 在 PyCharm 中创建 Python 工程 )
  4. 综合实践活动信息技术小学版第三册电子课本_峄城区初中信息技术、综合实践活动学科教师素养提升培训圆满落幕...
  5. 无招胜有招之spring _高频面试题
  6. Thymeleaf select 使用 和多select 级联选择
  7. C和指针之动态内存分配(读取范围在1和标准输入读取的size之前每个数据出现的次数)
  8. 数据结构与算法之-----图(基本概念)
  9. python语言的缩进可以采用tab键实现吗_python中使用空格还是使用 Tab键缩进的建议...
  10. VIM插件——vimplus安装(centos 7)
  11. c++ 成员初始化列表
  12. 图像坐标系与世界坐标系的变
  13. lan pci 联想开机_联想笔记本bios怎么设置 联想笔记本进入bios方法【详解】
  14. 转化Foggy_Cityscapes数据集为voc和yolo格式用作目标检测
  15. 昔日无痕,沧桑有迹-魔幻般的2020
  16. 2022读书感第一篇《小王子》
  17. RedHat(RHEL)6.2 X64 Oracle11g X64 安装参考文档
  18. 中国企业去除oracle,去IOE浪潮之下,Oracle再次大规模裁员,企业全面上云成大趋势...
  19. 2019年互联网公司月饼颜值大比拼!
  20. 民间秘方,里面的方子都是一个老中医几十年的心血哦。(感觉不错就摘过来了)

热门文章

  1. 网络资源备份 杨萃先书
  2. Excel 操作收藏
  3. 【ESP8266】ESP8266_NONOS_SDK开发包生成的镜像文件构建步骤分析
  4. python 语言教程(2)基础语法之标识符
  5. [ARM-assembly]-ARMV9-A64指令汇总-指令速查
  6. [待]-optee的native_intr_handler中断处理流程
  7. ARMV8-aarch64的寄存器介绍(二)
  8. Selenium 与 PhantomJS
  9. 密码学基础知识(二)密码体制
  10. 变种GandCrab样本分析