当前位置:   article > 正文

IEDA使用之debug技巧(附高级玩法)_idea 指定线程

idea 指定线程

前言

debug作为程序员的基础技能之一,在实际项目开发的排错中非常好用。

debug不仅可以让我们更快定位到问题所在,而且debug模式的使用,也让程序员更清楚地了解到代码运行背后的逻辑。

这篇文章为大家介绍一下IntelliJ IDEA中,debug在各种场景下的使用方法,主要分为基本使用和高级bebug两部分。

一、基本使用

1.1行断点

行断点是debug模式中最常见的一种,直接在所需要debug的行打断点即可。程序调试到该行时,会自动停下并给出相关信息、日志等。

具体如图1-1-1所示:
在这里插入图片描述

图1-1-1
#### 1.2详细断点

详细断点的用法是在需要断点的行左边:鼠标左键+shift,出现图1-2-1所示配置界面。
在这里插入图片描述

图1-2-1

该用法可以按照条件自行进行配置,一般而言,该方法调试过后会在控制台输出详细的信息,如调用的方法、所属类名等,具体如图1-2-2所示。在这里插入图片描述

图1-2-2
1.3方法断点

方法断点是debug模式中较为常见的一种,最主要的作用是可以定位到该方法的接口和实现类。

特别是导入外部包类的时候,可以快速明确该方法的所属包类,进而更方便地解决问题。

具体如图1-3-1所示:
在这里插入图片描述

图1-3-1
1.4异常断点 | 全局捕获

异常断定是debug模式中有效定位异常的一种方式,并且可以设置项目中自定义的一些异常。

即只要代码运行或者debug时出现了异常,则会停在该异常处,提示该处发生异常。具体如图1-4-1所示:在这里插入图片描述

图1-4-1

1.5读写断点 | 成员监控

读写断点主要是对类成员的声明周期进行一个监控,可以按照代码运行的顺序准确地描述出该成员在生命周期中的情况。

对与成员变量的debug,如图1-5-1所示:
在这里插入图片描述

图1-5-1

例如图1-5-2,有参构造第一次为对象设置值时:
在这里插入图片描述

图1-5-2

随后在使用@Data注解的前提下,为该对象的age属性再一次设置值,如图1-5-3所示:
在这里插入图片描述

图1-5-3

二、高级debug技巧

2.1条件表达式

Debug中的条件表达式可以在执行断点的时候,对需要调试的代码行添加条件,如对变量取模、调试指定线程等。

2.1.1对变量取模

在for循环中,条件表达式中的i往往要循环多次,点击断点右键即可出现条件面板,当i取模为2时执行debug,这样就可以在调试的时候将程序停在我们想要停的地方。具体如图2-1-1所示:
在这里插入图片描述

图2-1-1
2.1.2调试指定线程

我们在调试的时候,无论是对某个变量或者方法进行调试时,debugger都会表明该断点调试所在的线程。

当我们要指定调试某个线程时,可以在条件面板中指定需要调试的线程名,具体如图2-1-2所示:
在这里插入图片描述

图2-1-2
2.2打印堆栈信息

我们在调试的时候,除了看代码中的变量、方法的执行过程外,有的时候还想看看与之相关的堆栈信息。

看看代码在运行的同时,堆栈里发生什么变化。

点击断点右键,More(Ctrl+Shift+F8) 调出更为详细的配置面板,勾选“断点信息”与“堆栈”即可。如图2-2-1所示:
在这里插入图片描述

图2-2-1

点击调试后的效果如图2-2-2所示:
在这里插入图片描述

图2-2-2
2.3避免操作资源(强制返回)

当我们在调试时,如果在某个方法内有许多行代码,而你只想调试其中的某一行代码,不接着往下调试,那么可以选择debug的Force return(强制返回),就可以跳过后面的代码执行直接跳出方法。具体如图2-3-1所示:
在这里插入图片描述

图2-3-1

结果只调试了指定的一行代码,具体效果如图2-3-2所示:
在这里插入图片描述

图2-3-2
2.4debug快捷键(图标)含义

作为程序员虽然每天都要和debugger打交道,下面详细地为大家介绍一下这些快捷键的使用方法,提升大家在开发调试中的效率。

Debugger面板如图2-4-1所示,标注了每个常用快捷键的代号,下面我会根据代号一一为大家展开说明。
在这里插入图片描述

图2-4-1

横排总共有8个图标:

2.4.1Show Execution Point

定位至断点停顿的地方:当我们在调试到该断点时,如果我们想跳转到其它类、方法、变量或者是源码去观察整段代码的逻辑,点击这个图标,就可以回到当前断定的位置。

2.4.2Step Over

一行行地往下执行代码:不管断点所在行中的代码是否会调用别的方法、引用别的变量,该行执行完毕后接着执行下一行。

2.4.3Step Into | Step Out

进入/返回到该断点的定义处:如图2-4-2所示,断点打在execute()方法上,点击step into即可跳转到该方法的定义处,step out则是返回到断点处。
在这里插入图片描述

图2-4-2
2.4.4Force Step Into

强制进入断点的内部:如下图2-4-3所示,断在所在行有一个append方法,点击Force Step Into图标后,即进入了该方法的内部(JDK的源码),如图2-4-4所示。
在这里插入图片描述

图2-4-3

JDK8的append方法内部:
在这里插入图片描述

图2-4-4
2.4.6Drop Frame

跳过当前帧:点击该图标即可跳过当前的断点的堆栈帧,回退到该方法调用的地方。

2.4.7Run to Cursor

直接调试光标所在行代码:如果在debug调试中遇到多行代码需一步步执行,但想跳过不必要的代码行,那么将鼠标光标放在想调试的代码行处,点击Run to Cursor即可调试该行代码。

2.4.8Evaluate

表达式分析:可以在断点所在行执行Evaluate,即可在弹出的窗口预先看到执行结果。

竖排总共有5个图标:

a:

重新进行debug。

b:

Resume Program:如果下面代码没有断点,那么执行完全部代码;如果下面有代码,那么跳转到下一个断点。

c:

Stop Debug:停止debug调试。

d:

View Breakpoints:查看目前所有断点的详情。

e:

Mute Breakpoints:取消所有设置的断点。

2.5Stream流的debug
Trace Current Stream Chain

这是IDEA的debug中专门针对java8的Stream流提供的追踪调试功能,该功能可以清楚地看到每个流变量的去向,该功能需要在较高版本的IDEA中才具备。具体如图2-5-1所示:
在这里插入图片描述

图2-5-1

三、总结

我们在项目开发中,不可避免地会遇到程序发生异常的情况:如返回结果不对、 没响应,肉眼又发现不了的的错误等,这时调试代码可以帮我们理清思路,找到问题所在,追根溯源地从根本发现问题、解决问题。

在IntelliJ IDEA中各种场景下debug的使用方法到这里就分享结束了,感谢大家点开阅读,如有错误,不吝赐教!

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/羊村懒王/article/detail/259530
推荐阅读
相关标签
  

闽ICP备14008679号