我有一个web应用程序在jboss应用程序服务器上运行(但它不是特定的jboss,所以我们也可以认为它是一个tomcat或任何其他服务器)。现在我遇到了一个线程似乎处于死锁状态的问题。它始终使用100%的CPU。我已启动具有启用调试端口的服务器,并且可以将Eclipse连接到它。但问题是:有很多线程在运行。我如何找到正确的线程?我知道进程ID(来自Linux“top”命令),但我认为这没有帮助。我真的必须单独打开每个线程,并检查他们目前正在做什么?或者有没有一种方法来过滤“最活跃”的线程或类似的东西在Eclipse中?如何在Eclipse远程调试器中发现有问题的线程?
2
A
回答
2
您可以尝试生成线程转储(CTRL + Break,如this thread所示)。
或者您可以将JConsole附加到远程会话(因此暂时搁置Eclipse),监视线程并生成线程转储。
alt text http://www.jroller.com/dumpster/resource/tdajconsole.png
1
好像是你需要确定哪个线程首先吃CPU来缩小范围到具有错误的代码,那么该代码是由该线程,并在这一点上,你可以执行远程调试。
我会建议使用像JProfiler,jvisualvm,jconsole或类似的东西。使用这些工具之一可以让你深入了解线程正在做什么,并且允许你通过使用的cpu循环对线程进行排序,因此您可以快速找到有问题的线程。
相关问题
- 1. eclipse远程调试超时问题
- 2. eclipse远程调试
- 3. 在多线程环境下在eclipse中进行远程调试
- 4. Eclipse的远程调试
- 5. 我如何在我的eclipse中调试远程应用程序
- 6. 如何调试线程等待问题?
- 7. 在eclipse中远程调试python项目
- 8. 在eclipse中远程调试tomcat
- 9. Eclipse/Intellij远程调试
- 10. 远程调试和eclipse
- 11. Eclipse远程调试spark-submit
- 12. PHP,Eclipse中,远程调试,CentOS的,57%
- 13. 如何从Eclipse中调试远程Glassfish Web应用程序?
- 14. eclipse调试远程web应用程序
- 15. 玩激活器调试终止试图从eclipse远程调试
- 16. 从Eclipse + Javascript调试远程Tomcat服务器上的JSP调试
- 17. 在eclipse中调试多线程
- 18. .NET远程调试域/网络问题
- 19. 使用jetty服务器在eclipse中远程调试
- 20. 远程调试使用Eclipse的PHP
- 21. Eclipse的PDT和XDebug远程调试
- 22. 线程相关的问题和调试
- 23. Linux远程调试线程错误(GDBServer)
- 24. 如何远程调试Lua?
- 25. 如何远程调试console.log
- 26. Eclipse中的调试问题
- 27. 在Eclipse中调试远程JBoss GWT应用程序
- 28. Eclipse中的PyDev远程调试器和Tab完成
- 29. 远程调试:远程调试器不支持Windows
- 30. Eclipse远程过程调用
一个简单的线程转储确实是我所需要的。为了找到使用这么多CPU的线程,我可以在Linux上使用程序“htop”,它也可以显示和CPU使用 - 排序线程(而不仅仅是“top”)。所以htop给了我一个线程ID,并且这个线程ID也可以在线程转储中找到,它给了我有问题代码的堆栈跟踪。完善。 – kayahr 2010-04-11 14:55:51