10
votes

Comment déboguer une impasse en Java en utilisant Eclipse

Quelles techniques peuvent utiliser pour déboguer ce qui semble être une impasse dans un programme Java. Mon IDE est Eclipse et je pense que j'ai identifié les deux fils sans morceaux. Dans le débogueur, cliquez avec le bouton droit de la souris sur l'un des threads en question et la sélection de la suspension suspend le thread et affiche le code actuellement exécuté. Tentative d'étape ou d'étape sur la question de la ligne semble n'avoir aucun effet - l'état du thread change sur "Stepping" avec contrôle ne revenant jamais au débogueur Sauf suspension ne se cliquait à nouveau.
Merci


0 commentaires

6 Réponses :


0
votes

Je ne sais pas sur Eclipse, mais ce que vous cherchez est un profileur. Checkout JProfiler ou consulter Cette liste par exemple. Le profileur se connecte directement à la JVM et visualise ce qui se passe à l'intérieur de votre programme en temps réel. Lorsque des blocages se produisent, vous obtenez des indices visuels / textuels dont les threads sont en conflit.


1 commentaires

Yourkit a la meilleure représentation des fils et parfois, il peut même détecter l'impasse automatiquement.



1
votes

Lors de l'exécution du programme en "Mode console", vous pouvez appuyer sur Ctrl + Break , ce qui vous donne une vidée à thread. Une fois que vous avez coulé dans l'impasse, cela pourrait être utile. Si l'impasse n'apparaît pas trop souvent, il pourrait être difficile d'attraper l'impasse comme celle-ci.


0 commentaires

1
votes

La fenêtre de débogage qui affiche les piles des différents threads indiquera quand un thread s'arrête. Lorsque deux threads sont arrêtés, vous pouvez examiner ce qui attend chacun. Trouver quelque chose en commun vous dira la source de l'impasse.


0 commentaires

10
votes

Si vous utilisez un Sun JVM, fixez ensuite avec JConsole et allez dans le volet de threads. Il y a un bouton "Détecter une impasse".


0 commentaires

-1
votes

Je recommanderais d'utiliser un outil d'analyse statique comme

Findbugs

, qui peut souvent détecter des blocages au moment de la compilation


0 commentaires

3
votes

Il y a quelques minutes, j'ai trébuché sur ceci:

http://runnerwhocodes.blogspot.com/2007/ 10 / DÉTECTION DE DÉTECTEUR-AVEC-ECLIPSE.HTML

Pour moi, il semble que la meilleure approche détecte les impacts (même cela ne vous aiderait pas dans chaque cas, par exemple détecter des blocages en combinaison avec des serrures EMT).


0 commentaires