Welchen Java Debugger benutzen Sie *

7

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?

  • In der Registerkarte "Variablen" können Sie Java-Code-Bits eingeben und ausführen. Sie müssen jedoch zuerst auf etwas klicken (ich klicke normalerweise auf "dieses"), um ihm einen Kontext zu geben. Dann, nachdem Sie einen langen Java-Ausdruck eingegeben haben, um etwas zu debuggen und "auszuführen", wird Ihr Ausdruck durch das Ergebnis ersetzt, so dass Sie ihn erneut eingeben müssen. Gibt es einen besseren Weg, wie eine Konsole oder etwas, das mir fehlt?
  • Wenn Sie durch Datenstrukturen stochern, lässt die Darstellung im Debugger viel zu wünschen übrig. Sie sehen die interne Darstellung von Listen, Maps, StringBuilders usw. Was ich sehen möchte, ist, was diese Objekte konzeptionell enthalten. Gibt es eine Möglichkeit, dies zu tun, vielleicht mit einem anderen Debugger, oder eine Erweiterung oder etwas?
  • Wenn eine Ausnahme ausgelöst wird, gibt es eine Möglichkeit, den Status der Anwendung zu überprüfen, in der die Ausnahme ausgelöst wurde? Momentan muss ich Breakpoints setzen, bevor die Exception auftritt und dann versuchen, sie zu reproduzieren.
  • Wenn ich über eine Zeile mit vielen Anweisungen steige, kann ich nicht wirklich sehen, welche dieser Anweisungen ausgeführt wird, außer indem ich auf jede einzelne "eintrete", um zu sehen, wohin sie mich führt.
  • Wenn kein Quellcode gefunden wird, starrt Eclipse Sie nur ausdruckslos an. Sie erhalten einen hilfreichen Bildschirm, der sagt, dass "Klassendatei-Editor / Quellcode nicht gefunden" vollkommen nutzlos ist. Ich würde viel lieber in der Lage sein, durch die Bytecodes zu gehen, damit ich zumindest sehen kann, was vor sich geht. Kennt jemand einen Java-Debugger, der das besser als Eclipse macht?
mikevdg 22.12.2010, 21:16
quelle

8 Antworten

11

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.

    
Vilas 22.12.2010 21:27
quelle
4

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.

    
ILMTitan 22.12.2010 21:39
quelle
3

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.

    
Jesper 22.12.2010 21:22
quelle
1

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.

    
Peter Lawrey 22.12.2010 21:23
quelle
1

Hier ist meine Antwort - die Kugeln sind in der gleichen Reihenfolge wie Ihre Frage Kugeln:

  • Es gibt einen besseren Weg, es zu tun:
    1. Verwenden Sie die Ansicht anzeigen, um Anweisungen auszuführen.
    2. Schreiben Sie etwas über die Klasse selbst und "inspizieren" Sie sie (Strg + Umschalt + I)
  • Siehe das kleine Symbol in der Variablenansicht, das "Logische Struktur anzeigen" anzeigt. Es könnte sein, was du suchst.
  • Sie können einen allgemeinen Breakpoint auf Exception setzen, um die Exception sofort zu erfassen. In der Exceptions-Ansicht ist der J! Symbol.
  • Ich benutze Strg + Alt + Mausklick auf die Methode, die ich betreten möchte, funktioniert wie ein Zauber!
  • Sie können immer noch mit Tasten oder Knöpfen gehen (siehe Stapel). Wenn Sie den Code sehen möchten, verwenden Sie den Decompiler.

Ich glaube, sie haben immer noch was zu verbessern, aber diese Tipps könnten Ihnen ein wenig helfen.

    
oshai 23.12.2010 04:29
quelle
1
  

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).

    
JesperE 27.12.2010 07:46
quelle
0

Alternativ können Sie Ihren Code mit log.debug und System.out.println versehen, was bedeutet, dass Sie tun können, was Sie wollen!

    
GreenieMeanie 28.12.2010 19:11
quelle
0

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.

    
jfager 13.04.2014 18:43
quelle

Tags und Links