IntelliJ IDEA 之 那些年,我错过的断点

IntelliJ IDEA 之 那些年,我错过的断点


写在前面

在调试过程中,如果没有人为干预的话,程序会按照指定的流程执行下去,但事实上,有些时候我们想违背程序正常的执行过程,还想在调试过程中修改源代码,还想阳光明媚,春暖花开。

题外话

之前调试程序的时候,我总会不小心错过断点,因为有时候设置的断点较多,点着点着(Resume Program:点一下程序就会执行至下一个断点处)就跳过了。这个时候,我总是傻傻的从头再来一遍。


主要内容


+ 演示环境

+ 调用栈帧介绍

+ 返回前一个栈帧

+ 强制退出当前方法

+ 当前帧栈抛出异常

+ 调试期间修改代码

+ 附件和注意


演示环境 ,介绍本次远程调试所依赖的软件环境。


+ IntelliJ IDEA :2018.2.1 (Ultimate Edition) 

+ Windows 10 家庭中文版


 调用栈帧介绍


当程序在断点处阻塞时,可以通过查看程序栈帧 Frames 分析程序的运行过程,线程每一次方法调用都会产生一个栈帧 Frame,Frame 中存有方法执行时的局部变量和方法实参(栈帧可以看成当前线程的调用栈,调用栈中保存了局部变量,实参等数据的快照)。


程序运行栈帧 Frames


返回前一个栈帧


如果你在调试过程中不小心越过了期望调试的代码,没关系,你可以使用(Drop Frame)功能返回到上一个栈帧 Frame,如果还没有返回到你期待的代码处,那么就再返回一次。


Drop Frame:返回至上一个栈帧


强制退出当前方法


如果断点阻塞在方法 A 处,你期望直接返回当前方法,而不需要继续执行该方法其他的内容,那么可以使用 Force Return Current Method。


其中,若 A 方法有返回值,那么你需要提供一个自定义的返回值,若是断点方法存在 try - finally 代码块,那么 Idea 会询问你是否执行 finally 代码块中的内容,对的,这一切都取决于你的诉求。


强制退出当前方法(栈帧)


当前帧栈抛出异常


如果你期望在断点方法抛出异常,观察异常情况下程序的运行情况,那么 Throw Exception 恰好可以满足你的需求。


当前帧抛出异常


调试期间修改代码


如果你在调试代码的时候发现了问题,小改之后期望继续调试,你是否会停掉当前调试会话,选择重新来过呢?Idea 已经为我们考虑到这些麻烦的事情了,HotSwap(热插拔) 机制可以帮助你重新加载修改后的代码,而无需重启调试会话。


调试期间修改代码


修改完代码后,你需要重新编译一下新代码,这样热插播 HotSwap 就可以发现有文件发生改变,Idea 并会提示你是否需要重现加载,选择加载,继续进行调试。


附件和注意


附件和注意,包括上述 Gif 图片中的配置信息和测试代码片段,若有任何未提及到的内容,请联系我。

注意:

调试过程中难免会错过一些精彩的地方,如果你了解如果改变调试流程,那么你好像还有机会折回,否则,只能重新来过咯。


微信公众号


文章内容大多数都是从我的公众号搬过来的,内容可能没有公众号更新的及时,下面是我的公号,欢迎来访。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,684评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 87,143评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 151,214评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,788评论 1 277
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,796评论 5 368
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,665评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,027评论 3 399
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,679评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 41,346评论 1 299
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,664评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,766评论 1 331
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,412评论 4 321
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,015评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,974评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,203评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,073评论 2 350
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,501评论 2 343

推荐阅读更多精彩内容

  • Swift1> Swift和OC的区别1.1> Swift没有地址/指针的概念1.2> 泛型1.3> 类型严谨 对...
    cosWriter阅读 11,084评论 1 32
  • 转载 与调试器共舞 - LLDB 的华尔兹: https://objccn.io/issue-19-2/ 推荐:i...
    F麦子阅读 3,325评论 0 10
  • Android Studio目前已经成为开发Android的主要工具,用熟了可谓相当顺手。作为开发者,调试并发现b...
    涅槃1992阅读 50,623评论 36 365
  • 当年纪八旬,因为疾病而不能吃想吃的香蕉,就像三五岁的小孩子,因为疾病而不能多吃一块儿想吃的饼干……老人与小孩,都很...
    ljx简简单单的的阅读 182评论 0 0
  • "执中无权,犹执一也"。对于非常时期丶非常人物的非常之举,只要是因地制宜,顺势而为,应天顺民,于国于世界大势,于时...
    刘绍发阅读 306评论 2 11