View Full Version : [JAVA] Thread deadlock debug
starfred
18-07-2011, 19:05
Salve, mi sapreste consigliare un buon tool per il debug per Java?
Ho un codice che a volte quasi subito, a volte dopo un bel po' va in deadlock.
Quindi mi servirebbe qualcosa per monitorizzare varie sezioni critiche o qualcosa di simile...
grazie
banryu79
19-07-2011, 08:29
Ciao, a questa pagina (http://www.oracle.com/technetwork/java/javase/index-138283.html#guides) trovi le "trouble shooting guides". Consulta quelle più pertinenti alla tua situazione (sistema operativo, tipo di applicazione) e cerca thread deadlock.
So che c'è un handler collegato alla pressione di Ctrl-Break che stampa un dump dello stack trace dei thread sullo standard output e manda in esecuzione un algoritmo per rilevare deadlock; nel caso un deadlock venga rilevato verranno stampate ulteriori informazioni sullo standard output.
[vedi questo pdf, sezione 1.16 (http://java.sun.com/j2se/1.5/pdf/jdk50_ts_guide.pdf)]
starfred
19-07-2011, 09:57
ciao, grazie per la risposta, piano piano sto prendeno un po' di mano con Ctrl-Break Handler :) .
banryu79
19-07-2011, 10:04
ciao, grazie per la risposta, piano piano sto prendeno un po' di mano con Ctrl-Break Handler :) .
Ciao, anche con JConsole può fare al caso tuo.
Guarda qui[guida] (http://java.sun.com/developer/technicalArticles/J2SE/jconsole.html#DeadlockDetection) e qua[blog entry] (http://weblogs.java.net/blog/mandychung/archive/2005/11/thread_dump_and.html) (essendo una GUI dovrebbe dimostrarsi più pratica da utilizzare)
starfred
19-07-2011, 10:34
ciao, grazie per le altre info ma son (finalmente) riuscito a capire dov'era l'errore.
Praticamente ho (dovuto) implementare la semantica signal_and_urgent_wait su una variabile condition, solo che erroneamente nel thread che andavo a risvegliare era presente un'altra signal, quindi si creava una specie di strana cosa che raramente generava deadlock, però facendo 10000 cicli for si notava :D
Grazie per l'aiuto banryu79
p.s. anche se a nessuno interessa il mio problema e la soluzione l'ho scritto giusto per chiarezza :D
Non vorrei sbagliarmi, ma se usi NetBeans dovrebbe esserci un monitor per i thread.
starfred
19-07-2011, 10:37
Non vorrei sbagliarmi, ma se usi NetBeans dovrebbe esserci un monitor per i thread.
Sì uso netbeans però diciamo che lo uso più come editor grafico che come tool di sviluppo, quindi lo conosco poco.
Comunque ora cerco, grazie per l'info
vBulletin® v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.