导读        

前天面试了一个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 调试技巧!!!

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

  2. idea debug调试_大牛都会用的 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. Java程序中Socket(关于客户端和服务端实例)
  2. 使用宝塔面板进行wordpress建站
  3. 使用Xamarin实现跨平台移动应用开发
  4. 清华大学刘知远组:基于Prompt Tuning对低维本征任务子空间进行探索
  5. C++ Opengl 绘制图像字符源码
  6. 模式8--WorkerThread
  7. (1)散列表(哈希表)的定义
  8. 第二代计算机网络主要贡献,2010级计算机网络试题
  9. 迅捷cad_迅捷泛型
  10. 一次历时两周的实习生笔试
  11. 安卓开源电子书 阅读器_4个适用于Android的开源电子书阅读器
  12. Linux内核源码总体介绍—1
  13. 数字图像处理——图像去雾技术的对比
  14. Python打包exe文件方法汇总【4种】
  15. j2ee是什么?(1)
  16. python字典中get()函数的用法总结
  17. 洛谷P1867 【Mc生存】经验值
  18. 数据中台,什么是数据中台?
  19. 买家用投影仪应该关注哪些数据?
  20. 【Linux】Linux发行版本的简介与选择

热门文章

  1. 软中断实现原理与应用
  2. GPIO口,上下拉电阻与推挽输出
  3. 使用PyPDF实现批量添加水印
  4. 关于软件物料清单(SBOM),你所需要了解的一切
  5. MAPSTRUCT(@Mapper用法)简单介绍
  6. 思科网络学院-网络互连ccna3-第九章
  7. 基于esp32的ic卡考勤系统
  8. Joplin最新同步方法--WebDav小秘
  9. POCO::ZIP 压缩与解压缩文件夹
  10. 如何使用借助python完成 ARCGIS工具箱的调用