Quali tecniche è possibile utilizzare per eseguire il debug di ciò che sembra essere un deadlock in un programma Java. Il mio IDE è Eclipse e penso di aver identificato i due thread bloccati. Nel debugger, facendo clic con il tasto destro su uno qualsiasi dei thread in questione e selezionando suspend sospende il thread e viene visualizzato il codice attualmente in esecuzione. Il tentativo di entrare o uscire dalla riga non sembra avere alcun effetto - lo stato del thread cambia in "Stepping" con il controllo che non ritorna mai al debugger a meno che non venga fatto nuovamente clic su suspend.
GrazieCome eseguire il debug di un deadlock in Java utilizzando Eclipse
risposta
Se si utilizza Sun JVM, collegarlo con JConsole e accedere al riquadro Thread. C'è un pulsante "Rileva deadlock".
Non so su eclipse ma quello che stai cercando è un profiler. Acquista JProfiler o dai un'occhiata a this list per esempio. Il profiler si collega direttamente alla JVM e visualizza ciò che accade all'interno del tuo programma in tempo reale. Quando si verificano deadlock, ottieni indizi visivi/testuali di quali thread sono in conflitto.
Quando si esegue il programma in "modalità console", è possibile premere ctrl+break
, che fornisce un dump del thread. Questo potrebbe essere utile una volta che ti sei imbattuto nella situazione di stallo. Se il deadlock non appare troppo spesso, potrebbe essere difficile comunque ottenere lo stallo come questo.
La finestra di debug che mostra le pile dei vari thread indicherà quando si interrompe un thread. Quando vengono interrotti due thread, è possibile esaminare ciò che ciascuno sta aspettando. Trovare qualcosa in comune ti dirà la fonte della situazione di stallo.
Ti consiglio di utilizzare uno strumento di analisi statica come
, che spesso può rilevare deadlock a tempo di compilazione
Pochi minuti fa mi sono imbattuto su questo:
http://runnerwhocodes.blogspot.com/2007/10/deadlock-detection-with-eclipse.html
Per me sembra che l'approccio migliore rilevi deadlock (anche se non lo sarebbe aiuto in ciascun caso, ad es. rilevamento di deadlock in combinazione con EMT-Locks).
- 1. Come eseguire il debug di un deadlock?
- 2. Come eseguire il debug di un'applicazione Java utilizzando VIM/GVIM?
- 3. Come eseguire il debug del codice Java compilato in Eclipse
- 4. Come eseguire il debug di file .class in ECLIPSE?
- 5. Come eseguire il debug di test JUnit simili a un normale programma Java in Eclipse
- 6. Come eseguire il debug dei programmi Node.js in eclipse (utilizzando node-eclipse)?
- 7. Impossibile eseguire/eseguire il debug di applicazioni Java in Eclipse (problema JavaTimeZone)
- 8. Eseguire il debug di Lua in un progetto Java utilizzando LuaJava
- 9. Come eseguire il debug di un progetto DLL utilizzando QtCreator?
- 10. Debug LLVM utilizzando Eclipse
- 11. Come eseguire il debug di app Android firmata da Eclipse?
- 12. Come eseguire il debug di un'applicazione Web Java in Netbeans?
- 13. Eseguire il debug di alcuni test PhpUnit in Eclipse
- 14. Come eseguire il debug su un dispositivo reale (utilizzando Eclipse/ADT)
- 15. Come eseguire il debug di un plug-in in Eclipse, ad esempio un progetto Java senza metodo Main
- 16. Utilizzo di Eclipse per eseguire il debug remoto con gdbserver
- 17. eclissi: come eseguire il debug di un programma Java come file .jar?
- 18. Come eseguire il debug di un servizio in background Android?
- 19. Come eseguire il debug di applicazioni Java Web Start?
- 20. Che cos'è la scorciatoia per eseguire il debug in PyDev utilizzando Eclipse
- 21. Come uccidere thread con deadlock in Java?
- 22. Come si esegue il debug correttamente utilizzando Eclipse e Pydev?
- 23. Come eseguire un semplice programma Java in Eclipse?
- 24. Come eseguire il debug del debug?
- 25. Debug JavaScript in Eclipse
- 26. Un buon modo per eseguire il debug di nullPointerException
- 27. Evidenziazione/debug JavaScript/HTML in Eclipse utilizzando PhoneGap
- 28. Come eseguire un progetto Play in Eclipse
- 29. Come eseguire il debug di un thread in Visual Studio
- 30. Come eseguire il debug di un pacchetto Python in PyCharm
YourKit ha la migliore rappresentazione dei thread e talvolta può anche rilevare automaticamente il deadlock. – nanda