Anzeigen vollständiger Zeichenfolgen beim Debuggen in Eclipse

166

Beim Debuggen von Java-Code werden Zeichenfolgen in den Ansichten "Variablen" und "Ausdrücke" nur bis zu einer bestimmten Länge angezeigt. Danach zeigt Eclipse "..." an.

Gibt es eine Möglichkeit, die gesamte Zeichenfolge zu überprüfen? (Dies erleichtert das Hinzufügen von Protokollierungsanweisungen zum Debuggen überall).

Ragebiswas
quelle
Wo sehen Sie dieses Verhalten? Welcher Teil des Debuggers?
Skaffman
Nebenbei bemerkt, dies kann eine Fehlbezeichnung sein, da es für Sie möglicherweise nicht funktioniert. Wenn Sie jedoch eine Debugging-Bibliothek wie java.util.logging oder log4j verwenden, können Sie Ihre Debug-Anweisungen (mit verschiedenen Debugging-Ebenen) problemlos umwandeln Ausdrucke oder Protokolldateien und es kann Ihnen den Vorteil geben, dass das Durchsuchen von Zeichenfolgen im Debug-Fenster möglicherweise nicht möglich ist. Nur ein Gedanke =)
corsiKa

Antworten:

225

In der Variablenansicht können Sie mit der rechten Maustaste auf den Detailbereich (den Abschnitt, in dem der Zeichenfolgeninhalt angezeigt wird) klicken und das Popup-Menü "Maximale Länge ..." auswählen. Die gleiche Länge gilt für das Popup-Fenster des Ausdrucksinspektors und für wenige andere Stellen.

Geben Sie hier die Bildbeschreibung ein

Eugene Kuleshov
quelle
17
Viel bessere Lösung als die ausgewählte. Danke dir!
Colin
13
Es ist gut darauf hinzuweisen, dass der Detailbereich der Abschnitt ist, in dem der Inhalt der Zeichenfolge angezeigt wird.
Bnrdo
1
Wie geht das in Eclipse Kepler? Bitte helfen Sie
Dummer
1
Die gute Nachricht ist, dass diese Änderung auch die Länge zu beeinflussen scheint, die angezeigt wird, wenn Sie den Mauszeiger über eine Variable bewegen, im Fenster "Überprüfen" oder in der Ansicht "Ausdrücke" prüfen und Werte in der Ansicht "Anzeigen" anzeigen.
Steve Chambers
1
Ich habe die richtige Lösung aktualisiert (die zuvor akzeptierte war die einzige Lösung für wirklich alte Eclipse-Versionen).
Ragebis war
134

In der Variablenansicht klicken Sie mit der rechten Maustaste auf die Variable und wählen Wert ändern . Wenn Ihre Variable sehr groß ist, müssen Sie einige Minuten warten (in diesem Fall reagiert Eclipse nicht auf Befehle), aber am Ende zeigt Eclipse Ihre Variable vollständig an.

Umberto
quelle
2
Ich kann nur sehen "data:image/bitmap;base64,/9j/4AAQSkZJRgABAQAAAQABAAD/2wBDAAEBAQEBAQEBAQEBAQEBAQE... (length: 22869)". Stellen Sie die Option "Max. Länge" nicht ein und "Wert ändern".
Falko
@falko "Max Length" hat bei mir nicht funktioniert, "Change value" war in Ordnung (nach einigen Sekunden Wartezeit, abhängig von der variablen Länge).
Umberto
Zumindest auf meinem System ist dies erheblich langsamer als das Erhöhen von "Max Length" (siehe andere Antwort).
Sleske
Eclipse ist nicht ganz glücklich über Ihre Idee. Ich habe es versucht und warte seit 30 Minuten auf jede Antwort von Eclipse. Buuut: Es scheint zu funktionieren;)
Joshit
22

Wenn Sie eine wirklich lange Zeichenfolge haben, verwende ich eine andere Strategie: Speichern Sie sie in einer Datei. Ich habe einen Codeausschnitt, den ich in der Anzeigeansicht verwende, der ausgewertet wird, um die Daten in eine Datei zu kopieren. Ich verwende Commons IO, aber Sie können dies nur mit JDK-Methoden tun.

org.apache.commons.io.FileUtils.writeStringToFile(new java.io.File("<filename>"), <expression to evaluate>);

Natürlich benötigen Sie das Commons IO JAR in Ihrem Klassenpfad, damit dies funktioniert. Wenn Sie dies nicht tun, greifen Sie auf JDK-Arbeit zurück.

zvikico
quelle
5
coole Problemumgehung. Ich persönlich würde dies als beste Antwort akzeptieren. Vorsichtsmaßnahme: <Dateiname> muss für das System definiert werden, auf dem die JVM ausgeführt wird. Dies macht einen Unterschied, wenn Sie ein Remote-Debugging durchführen. In diesem Fall wird die Datei auf dem Remote-System und nicht auf der Workstation geschrieben, auf der Eclipse ausgeführt wird .
Rexford
18

Der beste Weg, um einen String-Wert in der Eclipse-Debug-Ansicht anzuzeigen, ist wie folgt.

1) Wechseln Sie in Eclipse zur Debug-Ansicht

2) Wählen Sie die gewünschte Variable im Variablenbereich aus.

3) Klicken Sie mit der rechten Maustaste auf den Anzeigebereich des variablen Bereichs, in dem der Wert angezeigt wird, und klicken Sie auf Maximale Länge. Geben Sie den maximalen Zeichenwert im Bereich Details konfigurieren ein.

4) Prost

Geben Sie hier die Bildbeschreibung ein

Waqas Ahmed
quelle
1
Diese grafische Erklärung ist sehr hilfreich. +1
Bhavin Shah
3

Wenn der Debugger den Punkt erreicht, an dem Sie den String-Wert möchten, geben Sie einfach eine sysOut-Anweisung ein

System.out.println("The value is : \n " + query);

Wählen Sie die obige Anweisung aus und klicken Sie mit der rechten Maustaste auf> Ausführen

Der Wert wird auf der Konsole gedruckt

Sonali
quelle
0

Beim Javascript-basierten Debuggen auf Eclipse sind sowohl die Methode "Wert ändern" als auch die Methode "Maximale Länge" für mich fehlgeschlagen. Das erforderliche zu überwachende Objekt ( Ausdrücke ) hinzugefügt und dann mit der rechten Maustaste auf den überwachten Ausdruck geklickt, um "Vollwert laden" auszuwählen, ist die einzige Lösung das funktioniert bei mir, aber auch das fügt unerwünschtes "\ n" in die Ausgabe ein .

Hinweis - "Maximale Länge" muss eingestellt sein, damit "Vollständigen Wert laden" beim Laden von Werten bis zur maximalen Länge funktioniert (Standard in Eclipse ist 10000). In der obigen Antwort erfahren Sie, wie Sie die maximale Länge einstellen.

Prinz Champappilly
quelle
0

In Eclipse Mars gibt es keine "maxLength". Und der "Änderungswert" funktioniert nur mit "Variablen", nicht mit "Ausdrücken", daher funktioniert keiner der oben genannten Punkte für mich.

Geben Sie hier die Bildbeschreibung ein

Und der Ausdruck wird in der Mitte geschnitten, nicht am Ende. Ich denke, sie haben das Standardverhalten geändert.

Das einzige, was für mich funktioniert, ist, die Breite der Spalte für den Ausdrucksnamen zu erweitern und auf den Ausdruck zu klicken, um alles auszuwählen und den Inhalt in voller Länge anzuzeigen.

WesternGun
quelle
0

Nichts von dem oben genannten hat für mich funktioniert, außerdem können einige Elemente der Benutzeroberfläche in meiner Eclipse nicht wie beschrieben gefunden werden. Ich benutze STS 4.3.1.

Der Wert, den ich brauchte, war wirklich groß, er ist Teil einer riesigen JSON-Anfrage. Umgehung: Verwenden Sie einen Ausdruck in der Eclipse Debug Shell-Konsole und geben Sie die Teilzeichenfolge des gesamten Werts aus. Da Sie den Teilwert sehen können, überprüfen Sie ihn und verwenden Sie die letzten Literale als Position, um den nächsten Block der Zeichenfolge auszugeben. Wiederholen Sie diesen Ansatz, bis Sie das bekommen, was Sie brauchen:

String result = new String(reallyBigByteArrayValue, "UTF-8");
result.substring(result.indexOf("some-unique-text"));
user07
quelle