Intellij Debugger langsam: Methoden-Haltepunkte können das Debuggen erheblich verlangsamen


81

Wenn ich den Intellij-Debugger starte, wird der Hinweis angezeigt, den Sie im Screenshot sehen können. Der Debugger benötigt viel Zeit zum Starten. Wie kann man dieses Problem lösen?Geben Sie hier die Bildbeschreibung ein

Antworten:


179

Deaktivieren Sie die Methoden-Haltepunkte. Sie können alle Ihre Haltepunkte über Ausführen | anzeigen Haltepunkte anzeigen (Strg - Umschalt -F8)


24
Aber sicher entfernt das Entfernen Ihrer Haltepunkte den Zweck des Debuggens? Oder mir fehlt etwas.
Arush436

14
@ arush436 Die Anzahl der Situationen, in denen Sie einen "Methoden-Haltepunkt" (! = regulärer Haltepunkt) benötigen, ist sehr begrenzt.
Robin

27
Und was ist dann der Unterschied zwischen einem Methoden-Haltepunkt und einem regulären Haltepunkt?
Jrahhali


2
Hier ist ein aktualisierter Link zu den verschiedenen Arten von Haltepunkten .
Cameron

11

In IDEA 2017.1 wurden emulierte Methoden-Haltepunkte eingeführt: https://www.jetbrains.com/help/idea/using-breakpoints.html#method_breakpoint Sie ermöglichen die Verwendung von Methoden-Haltepunkten ohne Leistungseinbußen. Standardmäßig aktiviert.


Wenn Sie diese Nachricht sehen, haben Sie möglicherweise (wie ich) in einem Popup auf "Emulation abbrechen" geklickt. Um es wieder zu aktivieren, gehen Sie zum Haltepunkt in Show-Haltepunkten und aktivieren Sie "Emuliert".
Captain Man

7

Vom JetBrains-Team: "Methoden-Haltepunkte verlangsamen den Debugger aufgrund des JVM-Designs erheblich. Die Auswertung ist teuer. Entfernen Sie Methoden-Haltepunkte und ziehen Sie die Verwendung der regulären Zeilen-Haltepunkte in Betracht." Sehen Sie mehr .

Um es kurz zu machen, es scheint, dass das Hauptproblem darin besteht, dass Methoden-Haltepunkte mithilfe der JPDA-Funktion " Methodeneingabe und Methodenexit" implementiert werden . Diese Implementierung erfordert die JVM ein Ereignis zu feuern jeden beliebigen Faden tritt jede Methode , und wenn jeder Thread beendet jede Methode.


5

Suchen Sie in Ihrem Code nach den roten Rauten-Symbolen (nicht nach roten Kreisen), die die Methoden-Haltepunkte darstellen. Höchstwahrscheinlich setzen Sie sie bei get () / set () -Methoden in Kotlin.


5

Geben Sie hier die Bildbeschreibung ein

Deaktivieren Sie den Methoden-Haltepunkt im Debug-Bereich. Hier ist ein Screenshot.


0

Praktische Ratschläge, denen ich folge: 1. Schalten Sie alle Haltepunkte stumm, während die App gestartet wird. 2. Aktivieren Sie Haltepunkte nur, während Sie diesen Fluss debuggen.

Natürlich hilft es nicht, wenn Sie versuchen, etwas zu debuggen, das beim Start der App passiert.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.