IDEA调试技巧

文章目录

  1. 1. 导读
  2. 2. 基本界面
  3. 3. 变量查看
  4. 4. 计算表达式
  5. 5. 断点条件设置
  6. 6. 线程切换
  7. 7. 强制抛异常
  8. 8. 强制返回
  9. 9. 笔者有话说

导读

  • 前天面试了一个985高校的实习生,问了他平时用什么开发工具,他想也没想的说IDEA,于是我抛砖引玉的问了一下IDEA的调试用过吧,你说说怎么设置断点条件?那孩子懵了,想了好一会对我说没用过,甚至都没听说过这个。
  • 作为一名资深的老司机,IDEA调试可以说是家常便饭,如果不会debug,我都不信你读过源码,就别和我说原理了,直接pass掉。

基本界面

① 以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方法体中能让你生不如死。
  • 设置断点条件有两种方式:
    • ①直接在断点上右键,添加condition条件即可。
    • ② view breakpoints(ctrl+shift+8)显示所有的断点,在condition中添加条件即可。
  • 异常断点:设置了异常断点后,比如空指针异常,在程序出现需要拦截的异常时会自动定位到指定的行。如下图:

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

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

线程切换

  • 通常我们在调试的时候,一个请求过来被拦截了,此时想要发起另外一个请求是无法重新发的,因为另外一个请求被阻塞了,只有当前线程执行完成之后才会走其他的线程。在IDEA中可以改变一下阻塞级别,有两种方法:
    • 断点上右键—>选择Thread—->Make Default,如下图:
    • 显示所有断点(crtl+shift+F8),选中某一个断点,选择Thread,Make Default即可。如下图:
  • 设置了阻塞级别,此时就可以在线程切换了,如下图:

强制抛异常

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

强制返回

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

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 深入学习 Intellij IDEA 调试技巧

    程序员的日常工作除了写代码之外,很大一部分时间将会在查找 BUG,解决问题。查找 BUG,离不开在 IDE 中调试代码。熟练的掌握调试技巧,可以帮助我们减少查找...

    andyxh
  • IDEA 调试技巧,比 Eclipse 强太多了!

    公众号改版后文章乱序推荐,希望你可以点击上方“Java进阶架构师”,点击右上角,将我们设为★“星标”!这样才不会错过每日进阶架构文章呀。

    java进阶架构师
  • IntelliJ IDEA 调试技巧,比 Eclipse 强太多了!

    https://www.cnblogs.com/jun1019/p/9741224.html

    良月柒
  • Intellij IDEA Debug 调试技巧

    F8: 跳到下一步 F7:进入到代码 Alt+shift+F7:强制进入代码 Shift+F8:跳到下一个断点 Atl+F9:运行到光标处 ctrl+shift...

    Java技术栈
  • idea 高级调试技巧

    两年前写过一篇关于idea的高级用法,今天再来一篇关于调试方面的技巧讲解:  一、条件断点 循环中经常用到这个技巧,比如:遍历1个大List的过程中,想让断点停...

    菩提树下的杨过
  • 掌握这些IDEA Debug调试技巧很重要

    上一篇文章 IntelliJ IDEA 高级调试之Stream Trace 算是 IntelliJ IDEA 高级调试技巧的开胃菜,很多小伙伴被这个小技巧征服。...

    码农小胖哥
  • IDEA的5大调试技巧,你都会吗?

    在项目开发的时候我发现很多小伙伴能非常熟练的使用IDEA编写代码,但是对于IDEA调试的技巧掌握的不是很好,只会F7、F8、F9等这些基本调试功能。

    Java技术精选
  • 这几个IDEA高级调试技巧,用了都说好!

    循环中经常用到这个技巧,比如:遍历1个大List的过程中,想让断点停在某个特定值。

    macrozheng
  • 这几个IDEA高级调试技巧,用完就是香

    测试分布式项目时,经常要一个项目启动2次,不用将一个项目打开多次启动,配置一下即可

    Java识堂
  • 这几个 IntelliJ IDEA 高级调试技巧,用了都说爽!

    循环中经常用到这个技巧,比如:遍历1个大List的过程中,想让断点停在某个特定值。

    zhisheng
  • 这几个 IntelliJ IDEA 高级调试技巧,用了都说爽!

    循环中经常用到这个技巧,比如:遍历1个大List的过程中,想让断点停在某个特定值。

    芋道源码
  • 几个IDEA高级调试技巧,完全是bug杀手啊

    循环中经常用到这个技巧,比如:遍历1个大List的过程中,想让断点停在某个特定值。

    KEN DO EVERTHING
  • Intellij IDEA debug断点调试技巧与总结详解篇

    在调试代码的时候,你的项目得debug模式启动,也就是点那个绿色的甲虫启动服务器,然后,就可以在代码里面断点调试啦。

    格姗知识圈
  • Intellij IDEA 2019 debug断点调试技巧与总结详解

    在 “调试工具” 窗口中,您可以看到框架和线程的状态、变量和表的列表。当您选择一个框架时,您会看到与所选框架相对应的变量。

    JavaEdge
  • Chrome调试技巧

    sam dragon
  • JSP调试技巧

    用户1112962
  • Theano调试技巧

    Theano是最老牌的深度学习库之一。它灵活的特点使其非常适合学术研究和快速实验,但是它难以调试的问题也遭到过无数吐槽。其实Theano本身提供了很多辅助调试的...

    用户1332428
  • Chrome 调试技巧

    想必大家都在用console.log在控制台输出点东西,其实console还有其它的方法:

    程序员宝库
  • css调试技巧

    注:index.html文件中包含的是index.css文件不是index.less文件

    matinal

扫码关注云+社区

领取腾讯云代金券