wake-up-neo.net

IntelliJ-Debugger bleibt hängen

Ich debugge eine normale Java-Anwendung, keine GUI, nur eine Menge Berechnungen und ~ 5 Aufrufe im Stack für den Haupt-Thread, wenn das Problem auftritt. Grundsätzlich sagt es in der lokalen Variablenüberwachung immer "Daten sammeln".

 enter image description here

Anstatt Schritt für Schritt zu gehen, habe ich versucht, einen Haltepunkt direkt nach dem Drücken von "Resume" hinzuzufügen. Jetzt heißt es "Warten, bis der letzte Debugger-Befehl abgeschlossen ist".  enter image description here

Hat jemand dieses Problem schon mal gehabt? Ist das Ändern des Debuggers die einzige Möglichkeit, dies herauszufinden?

14
Luca Mozzo

Bei IntelliJ (2017.1.4 Community Edition) wurde das Problem für mich behoben:

  • Datei-> Einstellungen
  • Geben Sie "toString" ein
  • Navigieren Sie zu Erstellung, Ausführung, Bereitstellung -> Debugger -> Datenansichten -> Java
  • Suchen Sie nach dem Kontrollkästchen "Aktivieren" toString () ":"
  • Deaktivieren Sie das Kästchen

Führen Sie den Debugger erneut aus. 

22
CharlieB

Folgendes hat es für mich auf IntelliJ 2018.2.4 behoben:

  • Klicken Sie mit der rechten Maustaste auf den Haltepunkt
  • Schalten Sie die Einstellung um, um "Thread" anstelle von "All" auszusetzen.

Dies ist nicht hilfreich, wenn Sie tatsächlich alle Threads für das Debuggen anhalten müssen, aber die Meldungen "Daten werden gesammelt ..." und "Warten, bis der letzte Debugger-Befehl abgeschlossen ist" für mich entfernt wurden. Die Einstellung bleibt auch für nachfolgende Haltepunkte erhalten, sodass Sie sie nur einmal ändern müssen.

1
ayluo

Ich bin gerade auf dasselbe Thema gestoßen. In meinem Fall war es eine Klasse (KafkaStream) im Breakpoint-Stack-Trace mit einer "schlechten" toString-Methode. Die toString-Methode blockiert und hängt daher den Debugger. Ich habe die toString-Methode im Hauptzeilenkode getestet und den Hauptthread aufgehängt (d. H. Dies ist kein spezifisches Debugger-Problem).

Hier ist der Stack-Trace für meinen Thread, der den Haltepunkt erreicht hat (in einer Zeile, die gerade versucht hat, ein boolesches Attribut meiner Klasse zu testen):

Hung Breakpoint Stacktrace

Intellij bietet eine Möglichkeit, um mein Problem zu umgehen. Damit können Sie überschreiben, wie der Debugger die Klasse darstellt:

Work Around

Wenn Ihr Problem zurückkommt, schlage ich vor, einen Thread-Dump (innerhalb oder außerhalb der IDE) zu erstellen und zu sehen, was Ihr Thread tut.

1
James Lent