Idea Intellij多线程调试
来源:互联网 发布:网络棋牌作弊器 编辑:程序博客网 时间:2024/06/13 13:16
原文:http://blog.csdn.net/fuzzytalker/article/details/50925218
(适用Idea 14 & 15,其他版本未知)
几天前遇到一个问题:
在多线程调试的时候,一些断点会被跳过。
比如像下面的代码:
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
启动调试后,可能会命中断点1或者断点3,命中路径可以是3->2->4或者3->4甚至3->2,总之并不会命中全部断点。在单步调试的过程中,代码的执行速度事实上远比直接运行慢得多,所以我加入了一些sleep用来模拟这些延迟的过程。
这段代码一共有两个线程,在调试一个线程的过程中,很显然另一个线程是在运行的。所以我们可以猜测是不是Idea是不是会在我们调试一个线程时,屏蔽另一个线程的断点。
为了验证这个观点,只需要在命中断点0处之后单步,就会到断点3,然会你调试得“慢”一点,就会发现断点1和2被跳过了。
打钩的是我当前调试的线程(main线程),当你开始单步调试之后,这个堆栈会刷新。
这显然是不能接受的,对于多线程调试来说,最重要的就是控制两个线程的执行顺序,我们要做的其实就是当另一个不处于调试状态的线程命中断点后,能先暂停,一直等到我去处理为止。
经过一番折腾后发现,其实Idea提供了这个功能,在断点处右键
它提供了两种挂起的模式,默认的是All,只需要选中Thread,它就会一直等待到你处理它。
右边的Make Default功能会使得之后打上的断点也会是Thread模式的(注意,之前打上的不会变更,需要手工更改)。
两个红圈的按钮就可以改,在Debug窗口的最右边。
之后就可以开心地调试了,对了,在这里切换线程
1 0
- Idea Intellij多线程调试
- Idea Intellij多线程调试
- IntelliJ IDEA debug调试
- IntelliJ IDEA远程调试
- Intellij idea 调试技巧
- Intellij idea 断点调试
- Intellij IDEA调试
- Intellij IDEA 调试Hadoop 源码
- IntelliJ IDEA 调试java程序
- Intellij Idea远程调试小记
- Intellij IDEA远程调试tomcat
- Intellij Idea调试功能总结
- Intellij IDEA Debug调试技巧
- Intellij IDEA Debug调试技巧
- intelliJ IDEA 远程调试配置
- Intellij IDEA Debug调试技巧
- Intellij IDEA Debug调试技巧
- Intellij IDEA Debug调试技巧
- STL源码剖析学习笔记之具备次配置力(sub-allocation)的SGI空间配置器
- JAVA-2.4-鸡兔同笼
- hdu 1892 See you~
- Android App耗电发热分析
- Linux面试题集锦三
- Idea Intellij多线程调试
- 高并发的epoll+线程池,epoll在线程池内
- 十大软件测试工具
- HDOJ 2818 Building Block (带权并查集)
- web前端学习随笔
- ArrayLIst源码探究
- excel突出显示两列的不同数据
- 使用telnet验证服务器端口是否开启
- 51nod 1105 二分套二分