写在前面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 的值。
Log 选项控制台输出内容
创建临时行断点
创建临时行断点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 图片中的配置信息和测试代码片段,若有任何未提及到的内容,请联系我。
注意:
本次分享内容并没有介绍所有的断点参数,一方面原因是觉得有些参数相对不是那么重要,另一方面原因是还没完全搞明白这些参数的意义,这个原因好像更为突出。当然如果你想了解其他未提及参数的意义,你可以随时联系我,我们一起讨论,完善内容。
微信公众号
文章内容大多数都是从我的公众号搬过来的,内容可能没有公众号更新的及时,下面是我的公号,欢迎来访。
Original url: Access
Created at: 2019-03-04 20:28:30
Category: default
Tags: none
未标明原创文章均为采集,版权归作者所有,转载无需和我联系,请注明原出处,南摩阿彌陀佛,知识,不只知道,要得到
java windows火焰图_mob64ca12ec8020的技术博客_51CTO博客 - 在windows下不可行,不知道作者是怎样搞的 监听SpringBoot 服务启动成功事件并打印信息_监听springboot启动完毕-CSDN博客 SpringBoot中就绪探针和存活探针_management.endpoint.health.probes.enabled-CSDN博客 u2u转换板 - 嘉立创EDA开源硬件平台 Spring Boot 项目的轻量级 HTTP 客户端 retrofit 框架,快来试试它!_Java精选-CSDN博客 手把手教你打造一套最牛的知识笔记管理系统! - 知乎 - 想法有重合-理论可参考 安宇雨 闲鱼 机械键盘 客制化 开贴记录 文本 linux 使用find命令查找包含某字符串的文件_beijihukk的博客-CSDN博客_find 查找字符串 ---- mac 也适用 安宇雨 打字音 记录集合 B站 bilibili 自行搭建 开坑 真正的客制化 安宇雨 黑苹果开坑 查找工具包maven pom 引用地 工具网站 Dantelis 介绍的玩轴入坑攻略 --- 关于轴的一些说法 --- 非官方 ---- 心得而已 --- 长期开坑更新 [本人问题][新开坑位]关于自动化测试的工具与平台应用 机械键盘 开团 网站记录 -- 能做一个收集的程序就好了 不过现在没时间 -- 信息大多是在群里发的 - 你要让垃圾佬 都去一个地方看难度也是很大的 精神支柱 [超级前台]sprinbboot maven superdesk-app 记录 [信息有用] [环境准备] [基本完成] [sebp/elk] 给已创建的Docker容器增加新的端口映射 - qq_30599553的博客 - CSDN博客 [正在研究] Elasticsearch, Logstash, Kibana (ELK) Docker image documentation elasticsearch centos 安装记录 及 启动手记 正式服务器 39 elasticsearch 问题合集 不断更新 6.1.1 | 6.5.1 两个版本 博客程序 - 测试 - bug记录 等等问题 laravel的启动过程解析 - lpfuture - 博客园 OAuth2 Server PHP 用 Laravel 搭建带 OAuth2 验证的 RESTful 服务 | Laravel China 社区 - 高品质的 Laravel 和 PHP 开发者社区 利用Laravel 搭建oauth2 API接口 附 Unauthenticated 解决办法 - 煮茶的博客 - SegmentFault 思否 使用 OAuth2-Server-php 搭建 OAuth2 Server - 午时的海 - 博客园 基于PHP构建OAuth 2.0 服务端 认证平台 - Endv - 博客园 Laravel 的 Artisan 命令行工具 Laravel 的文件系统和云存储功能集成 浅谈Chromium中的设计模式--终--Observer模式 浅谈Chromium中的设计模式--二--pre/post和Delegate模式 浅谈Chromium中的设计模式--一--Chromium中模块分层和进程模型 DeepMind 4 Hacking Yourself README.md update 20211011
Laravel China 简书 知乎 博客园 CSDN博客 开源中国 Go Further Ryan是菜鸟 | LNMP技术栈笔记 云栖社区-阿里云 Netflix技术博客 Techie Delight Linkedin技术博客 Dropbox技术博客 Facebook技术博客 淘宝中间件团队 美团技术博客 360技术博客 古巷博客 - 一个专注于分享的不正常博客 软件测试知识传播 - 测试窝 有赞技术团队 阮一峰 语雀 静觅丨崔庆才的个人博客 软件测试从业者综合能力提升 - isTester IBM Java 开发 使用开放 Java 生态系统开发现代应用程序 pengdai 一个强大的博主 HTML5资源教程 | 分享HTML5开发资源和开发教程 蘑菇博客 - 专注于技术分享的博客平台 个人博客-leapMie 流星007 CSDN博客 - 舍其小伙伴 稀土掘金 Go 技术论坛 | Golang / Go 语言中国知识社区
最新评论