[英]How to Debug a deadlock in Java using Eclipse
可以使用哪些技术来调试Java程序中看似死锁的内容。 我的IDE是Eclipse,我认为我已经识别出两个死锁的线程。 在调试器中,右键单击任何有问题的线程并选择suspend挂起线程并显示当前正在执行的代码。 尝试步入或跳过行问题似乎没有效果 - 线程状态更改为“Stepping”,控件永远不会返回调试器,除非再次单击suspend。
谢谢
如果您使用的是Sun JVM,请使用JConsole附加并转到“线程”窗格。 有一个“检测死锁”按钮。
几分钟前我偶然发现了这个:
http://runnerwhocodes.blogspot.com/2007/10/deadlock-detection-with-eclipse.html
对我来说,看起来最好的方法是检测死锁(即使它在每种情况下也无济于事,例如与EMT-Locks一起检测死锁)。
在“控制台模式”下运行程序时,可以按ctrl+break
,这会给你一个线程转储。 一旦遇到僵局,这可能会有所帮助。 如果死锁不常出现,那么就可能很难像这样陷入僵局。
显示各种线程堆栈的调试窗口将指示线程何时停止。 当两个线程停止时,您可以检查每个线程正在等待什么。 找到共同点会告诉你死锁的来源。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.