美文网首页IntelliJ Idea
IntelliJ IDEA 之 多线程调试重点参数

IntelliJ IDEA 之 多线程调试重点参数

作者: niexianglin | 来源:发表于2018-12-20 11:28 被阅读0次

IntelliJ IDEA 之 多线程调试重点参数


写在前面

暑假期间,正值中午,困意十足,正当精神游离之际。有同事在工作群里喊,测试环境某应用频繁出现响应超时。我立刻缓过神来,八九不离十,这个彩蛋是我埋的。

题外话

正常情况下,我们通过 Idea 创建的断点,都是 Suspend All,那么 Suspend All 代表的什么意思呢?因为今天的内容较少,这里我必须卖个关子,这样会显得内容多一些。

主要内容


+ 演示环境

+ 重现 “题外话” 中的场景

+ Breakpoint Suspend 参数介绍

+ 附件和注意

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


+ Apache Tomcat :7.0.55

+ IntelliJ IDEA :2018.2.1 (Ultimate Edition) 

+ Windows 10 家庭中文版

重现 “题外话” 中的场景


精神充沛时,我在远程调试(IntelliJ IDEA 之 远程调试篇)测试机的代码,并在 “Hello World” 类添加了行断点(IntelliJ IDEA 之 断点类型(Breakpoint)),然后就开始游离了。从此之后该测试应用就永远停止在了我的断点处,同时也无法提供其他的请求了。

stop the world

Breakpoint Suspend 参数介绍,在创建断点时有一个重要参数:Suspend

Suspend:未勾选,程序运行到断点处并不会阻塞,而会继续执行后面的逻辑。

Suspend:勾选,代表程序运行到断点处会阻塞。

+ All:勾选,代表断点会阻塞所有线程。

+ Thread:勾选,代表断点只会阻塞当前线程。

[Suspend勾选,All勾选] 是默认值,所以才会出现 “Stop The World” 的可怕情况。所以说,在多线程调试时,若你希望阻塞程序,最好选择 Thread 当前线程阻塞策略,这样就不会影响到其他线程的工作。


Suspend 参数

No Stop The World


no stop the world

附件和注意


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

注意:

本文的最后一张图片显示了选择 Thread 阻塞策略时的场景,因为 Idea 默认的阻塞策略是 All ,所以在远程调试的时候要注意,防止影响其他同事。当然若是在本地测试的话,影响就不会那么大了。


微信公众号


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

相关文章

网友评论

    本文标题:IntelliJ IDEA 之 多线程调试重点参数

    本文链接:https://www.haomeiwen.com/subject/vsxykqtx.html