我有一個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