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 p>
6 Réponses :
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. P>
Yourkit a la meilleure représentation des fils et parfois, il peut même détecter l'impasse automatiquement.
Lors de l'exécution du programme en "Mode console", vous pouvez appuyer sur Ctrl + Break Code>, 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. P>
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. P>
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". P>
Je recommanderais d'utiliser un outil d'analyse statique comme P>
Findbugs P>
, qui peut souvent détecter des blocages au moment de la compilation p>
Il y a quelques minutes, j'ai trébuché sur ceci: p>
http://runnerwhocodes.blogspot.com/2007/ 10 / DÉTECTION DE DÉTECTEUR-AVEC-ECLIPSE.HTML P>
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). P>