Ich verbringe viel Zeit damit, Anwendungen in Eclipse mit JPDA zu debuggen. Es gibt ein paar Probleme mit dem Eclipse-Debugger, die mich wirklich nerven. Kann jemand Plug-Ins, bessere Debugger oder vielleicht Tricks, die ich noch nicht kenne, empfehlen?
Ich benutze den Eclipse-Debugger seit einiger Zeit und teile einige Ihrer Bedenken. Einige der Punkte, die Sie erwähnen, wurden jedoch im Eclipse-Debugger gelöst / behoben:
Datenstrukturen: Die Variablenansicht hat bereits die Option, die "logische Struktur" von Listen / Mengen / Arrays usw. anzuzeigen. In der oberen linken Ecke dieser Ansicht befindet sich eine Schaltfläche, um dies zu aktivieren. Sie können auch eigene benutzerdefinierte Darstellungen über die Java- & gt; Debug- & gt; Logische Strukturen-Einstellungen hinzufügen.
Ausnahmen: Mit dem Debugger können Sie Ausnahme-Breakpoints setzen (Schaltfläche Java-Ausnahme-Breakpoint hinzufügen in der Breakpoints-Ansicht). Diese Haltepunkte werden ausgelöst, wenn eine bestimmte Ausnahme ausgelöst wird.
Quellcode: Wenn Sie ein Plugin installieren (z. B. asm Bytecode-Plugin Ссылка ), das über einen Viewer verfügt Bei Bytecode wird der Debugger den Bytecode überspringen, wenn der Quellcode fehlt.
Ich stimme viel von dem überein, was Vilas Jagannath sagt.
Verwenden des Eclipse-Debuggers Zusätzliche Punkte:
1) Die Anzeigeansicht. In dieser Ansicht können Sie Code im Kontext des aktuellen Stapelrahmens ausführen. Dies ermöglicht Ihnen, beliebige Codebits zu prüfen. In mancher Hinsicht ist es ein wenig primitiv, aber es funktioniert gut als ein Notizblock.
4) Wenn Sie einen Methodenaufruf in einer Zeile mit einem komplexen Ausdruck aufrufen möchten, können Sie zu dieser Funktion navigieren und dann "Zu Zeile ausführen" (Strg + R)
5) Sie können auch Schrittfilter verwenden, um Klassen zu filtern, die Sie nicht interessieren. Klicken Sie mit der rechten Maustaste auf den Stapelrahmen, den Sie nicht interessieren, und klicken Sie auf "Filtertyp". Stellen Sie sicher, dass Sie "Schrittfilter verwenden" aktiviert haben. Es ist das Symbol mit zwei Pfeilen genau rechts neben der Drop-to-Frame-Schaltfläche in der Debug-Ansicht.
Ich benutze NetBeans und seinen Debugger.
Über Ihren dritten Punkt (Ausnahmen): Ich glaube nicht, dass es eine andere Möglichkeit gibt, den Zustand an dem Punkt zu sehen, an dem die Ausnahme ausgelöst wird. Wenn die Ausnahme aus der Methode entfernt wird, wurde der Stapelrahmen für diese Methode verworfen - sie ist verloren, so dass Sie sie nicht weiter untersuchen können.
Der NetBeans Debugger lässt Sie, soweit ich weiß, auch nicht durch den Bytecode gehen.
Normalerweise würde ich sagen, dass Eclipse einen besseren Debugger hat als meine bevorzugte IDE, IntelliJ (kostenlose Edition). Für die ersten vier ist IntelliJ vielleicht besser mit Haltepunkten bei Ausnahmen (die Ihnen ermöglichen, den Zustand an der Stelle der Ausnahme zu sehen) wird ausgelöst), benutzerdefinierte Renderer für Objekttypen und persistente Ausdrücke (dh der Ausdruck wird jedes Mal neu ausgewertet, wenn Sie den Kontext ändern)
Ich kenne keinen Debugger, der den Bytecode durchläuft.
Hier ist meine Antwort - die Kugeln sind in der gleichen Reihenfolge wie Ihre Frage Kugeln:
Ich glaube, sie haben immer noch was zu verbessern, aber diese Tipps könnten Ihnen ein wenig helfen.
Wenn ich mit. über eine Linie gehe viele Aussagen dazu kann ich nicht tatsächlich sehen, welche dieser Aussagen wird ausgeführt, außer durch "Treten" in "zu jedem, um zu sehen, wo es dauert ich.
Wählen Sie die Funktion, die Sie betreten möchten, und verwenden Sie "Step In Selection" (ich habe es auf Strg-F5, aber Sie können es im Kontextmenü finden).
Alternativ können Sie Ihren Code mit log.debug und System.out.println versehen, was bedeutet, dass Sie tun können, was Sie wollen!
Für etwas anderes als einen GUI-Debugger habe ich ein Projekt namens jdiscript , mit dem Sie die JVM-Java-Debugger-Schnittstelle scripten können. Ich finde es besonders nützlich, um Thread-Konflikte zu beheben und Probleme zu finden, die nur sporadisch unter Produktionslasten auftauchen.