2010-05-03 4 views
13

Existe-t-il un mécanisme dans l'environnement de débogage Eclipse pour voir l'état des verrous de synchronisation et des processus en attente?débogage de la synchronisation Java

+0

Déboguez-vous un éventuel verrouillage? – aioobe

+0

J'ai trouvé un blocage inattendu, mais j'ai dû "deviner" qui pourrait être le cas de l'ensemble des processus inexplicablement bloqués. Il devrait être un meilleur moyen. – ddyer

Répondre

13

vous pouvez afficher l'état des moniteurs d'objet dans Le débogueur d'Eclipse. Vous pouvez find a short, clear tutorial here. Pour chaque thread, Eclipse peut vous montrer les moniteurs que le thread possède et ceux qu'il attend.

+1

Merci. Je ne peux pas imaginer pourquoi la vue des moniteurs est désactivée par défaut. – ddyer

+0

Il se peut que cela ne fonctionne que si vous recherchez un blocage dû à une instruction synchronisée. Je suis actuellement à la recherche d'un causé par un 'ReentrantReadWriteLock' et je ne reçois pas ce type d'information sous forme d'éclipse. – Scheintod

1

Comme suggéré here vous pouvez (si vous exécutez la machine virtuelle Java de Sun) procédez comme suit:

  1. lancement jconsole ou jvisualvm (tous deux présents dans le bac-répertoire de votre JDK-installation,
  2. attachent au processus que vous pensez est verrouillé
  3. aller à la fenêtre Threads. Il y a une « détection Deadlock » bouton
Questions connexes