Eclipse

Deadlock-Erkennung mit Eclipse

Posted by Michael Roth on Januar 25, 2011
Java, Programmieren / No Comments

Bei großen Projekten mit vielen Threads müssen die Zugriffe auf gemeinsame Objekte geregelt werden. Hierfür werden Teile des Java Codes mit einem synchronized Block versehen. Damit kann garantiert werden, dass nur immer ein Thread diesen Block ausführt. Bei mehreren synchronized Blöcken kann die Übersicht verloren gehen. Es entstehen Deadlocks. Die Suche nach diesen ist nicht einfach.

Aber zum Glück bietet Eclipse hier Hilfe an. Falls ein Programm auf Grund von Deadlocks nicht beendet wird, so kann man in der Debug-Ansicht das Programm pausieren. Über die Optionen kann man zusätzliche Informationen über die Monitore und System Threads anzeigen.

Dead Lock Erkennung mit Eclipse
Dead Lock Erkennung mit Eclipse

Dadurch werden die Prozesse, die an einem Deadlock beteiligt sind in der List rot dargestellt und es ist erkennbar welche Locks der Thread erhalten hat und auf welche er noch wartet. Im unteren Bild ist gut erkennbar, dass der main Thread bereits drei Ressourcen hat, aber noch auf die Klasse EventDisptacherImpl wartet.

Dead Locks mit Eclipse erkennen
Am Deadlock beteiligte Prozesse werden rot dargestellt

Mit dieser Einstellung ist das Finden von Deadlocks in Eclipse sehr einfach.

Tags: ,