IntelliJ IDEA 之 断点创建(Create Breakpoint)
写在前面
IntelliJ IDEA 之 断点类型(Breakpoint)中介绍了Idea支持的断点类型,但是没有介绍如何创建不同的断点类型,谨以此篇献给那些在外地漂泊的年轻人,中秋节将至,早些买回家的车票。
题外话
创建断点的方式不止一种,本篇将以最为简单的方式创建不同的断点类型。其中,不同类型的断点支持的断点参数也不尽相同,所以在介绍断点创建的过程中,会着重介绍较为重要的断点参数
主要内容
+ 演示环境
+ 断点对话框介绍
+ 创建行断点
+ 创建临时行断点
+ 创建属性断点
+ 创建方法断点
+ 创建异常断点
+ 附件和注意
演示环境 ,介绍本次远程调试所依赖的软件环境。
+ IntelliJ IDEA :2018.2.1 (Ultimate Edition)
+ Windows 10 家庭中文版
断点对话框介绍
断点对话框的主要作用包括:[1]查看程序中设置的所有断点,[2]设置某个特定断点的参数,[3]根据调试需要对断点进行描述和分组,[4]快捷键 Ctrl + Shift +F8。
断点对话框的左半拉时断点列表,单击某个断点会显示该断点支持的所有属性,与此同时,你可以在右半拉修改当前断点的属性。那么针对某个具体断点可以设置那些属性呢?
+ 断点动作:断点被激活时的具体动作,是打印自定义日志,还是打印程序堆栈信息。
+ 阻塞策略,当断点被激活时。是否需要阻塞程序,阻塞程序的话,具体的阻塞策略是什么,是阻塞全部线程,还是仅仅阻塞断点所处的线程。
+ 断点是否依赖其他断点,当且仅当断点A被激活后,断点B才会有可能被激活。
+ 设置断点激活条件,只有在满足条件的情况下断点才有可能被激活。
创建行断点
创建行断点 Line breakpoint:将光标移动至需要设置断点的代码行,然后单击代码行左边的檐槽,檐槽上会显示断点图标,然后打开断点对话框设置断点属性。
上图中创建了一个行断点,并设置了几个重要属性:
+ Enable:复选框选中代表当前断点有效
+ Suspend:复选框未选中代表断点激活时不会阻塞程序,震惊吗?我以前一直以为程序遇到断点就一定会阻塞,没想到还可以这样。因为复选框没有选中,所以后面的阻塞策略无法选择。其中,阻塞策略是一个很重要的选项,特别是在多线程调试时,相关内容会在下一篇分享中介绍。
+ Condition:复选框选中,并在下面的输入框中输入"1==1",因为条件恒成立,所以断点会被激活。
+ Log:选中"Breakpoint hit message",断点激活时输出提示;选中"Stack trace",断点激活时输出程序调用栈信息;选中"Evaluate and log",并在下面的输入框中输入"args",断点激活时会计算并输出变量 args 的值。
创建临时行断点
创建临时行断点Line breakpoint:创建过程与行断点一样,唯一不同之处就是修改一个断点属性。
上图中创建了一个行断点,并设置了一个重要属性:
+ Remove once hit:复选框选中代表激活一次后立马删除当前断点,这也就是"临时"代表的意思。
创建属性断点
创建属性断点 Filedbreakpoint:将光标移动至目标属性所在的代码行,然后单击代码行左边的檐槽,檐槽上出现断点图标,然后打开断点对话框设置断点属性。
上图中创建了一个属性断点,并设置了属性断点特有的属性:
+ Watch:复选框选中"Filed Access" 代表在程序所有读取目标属性值的地方创建断点;复选框"Filed madification"选中代表在程序所有修改属性值的地方创建断点。
创建方法断点
创建方法断点 Methodbreakpoint:将光标移动至目标方法所在的代码行,然后单击代码行左边的檐槽,檐槽上出现断点图标,然后打开断点对话框设置断点属性。
上图中创建了一个方法断点,并设置了属性断点特有的属性:
+ Watch:复选框选中"Method entry" 代表在程序在进入目标方法处激活断点;复选框未选中"Method exit"代表程序在离开目标方法处不会激活断点;复选框选中"Emulated"代表啥意思我还找到相关资料。
创建异常断点
创建异常断点 Exceptionbreakpoint:因为异常断点属于应用程序级别,不与任何源代码关联,所以不能像其他断点类型一样,通过代码编辑区域创建。但是,可以通过断点对话框创建异常断点。
上图中创建了一个异常断点,并设置了异常断点特有的属性:
+ Notification:
复选框选中"Catch excetion" 代表程序在捕获(Try Catch)BreakpointException 异常时激活断点。
选中"Uncatch excetion"代表程序在抛出(No Try Catch) BreakpointException 异常时激活断点。
附件和注意
附件和注意,包括上述 Gif 图片中的配置信息和测试代码片段,若有任何未提及到的内容,请联系我。
注意:
本次分享内容并没有介绍所有的断点参数,一方面原因是觉得有些参数相对不是那么重要,另一方面原因是还没完全搞明白这些参数的意义,这个原因好像更为突出。当然如果你想了解其他未提及参数的意义,你可以随时联系我,我们一起讨论,完善内容。
微信公众号
文章内容大多数都是从我的公众号搬过来的,内容可能没有公众号更新的及时,下面是我的公号,欢迎来访。