Visualizzazione di stringhe complete durante il debug in Eclipse


166

Durante il debug del codice Java, le stringhe nelle viste "Variabili" ed "Espressioni" vengono visualizzate solo fino a una certa lunghezza, dopodiché Eclipse mostra "..."

Esiste un modo per ispezionare l'intera stringa? (Ciò semplifica l'aggiunta di istruzioni di registrazione per il debug ovunque)


dove vedi questo comportamento? quale parte del debugger?
skaffman,

In una nota a margine, questo potrebbe essere un termine improprio, perché potrebbe non funzionare per te, ma se usi una libreria di debug come java.util.logging o log4j, puoi facilmente trasformare le tue istruzioni di debug (con diversi livelli di debug) in stampe o file di log e questo potrebbe darti il ​​vantaggio che potrebbe non essere setacciare le stringhe nella finestra di debug. Solo un pensiero =)
corsiKa

Risposte:


225

Nella vista Variabili è possibile fare clic con il pulsante destro del mouse sul riquadro Dettagli (la sezione in cui viene visualizzato il contenuto della stringa) e selezionare il menu a comparsa "Lunghezza massima ...". La stessa lunghezza si applica al popup dell'ispettore espressioni e in pochi altri luoghi.

inserisci qui la descrizione dell'immagine


17
Soluzione decisamente migliore di quella selezionata. Grazie!
Colin,

13
È utile sottolineare che il riquadro dei dettagli è la sezione in cui viene visualizzato il contenuto della stringa.
Bnrdo,

1
Come farlo in eclipse kepler? Pls help
Foolish

1
La buona notizia è che questa modifica sembra influire anche sulla lunghezza visualizzata quando si passa con il mouse su una variabile, ispezionando nella finestra "Ispeziona" o nella vista "Espressioni" e visualizzando i valori nella vista "Visualizza".
Steve Chambers,

1
Ho aggiornato la soluzione corretta (quella accettata in precedenza era l'unica soluzione per versioni di Eclipse davvero vecchie).
ragebis era il

134

Nella vista Variabili fai clic con il tasto destro del mouse sulla variabile e seleziona Cambia valore . Se la tua variabile è enorme devi aspettare qualche minuto (in questo caso Eclipse non risponde ai comandi) ma alla fine Eclipse mostrerà la tua variabile interamente.


2
Posso solo vedere "data:image/bitmap;base64,/9j/4AAQSkZJRgABAQAAAQABAAD/2wBDAAEBAQEBAQEBAQEBAQEBAQE... (length: 22869)". Impostare l'opzione "Lunghezza massima" non funziona e anche "Modifica valore".
falko,

@falko "Lunghezza massima" non ha funzionato per me, "Modifica valore" era ok (dopo aver atteso alcuni secondi, a seconda della lunghezza variabile).
Umberto,

Almeno sul mio sistema, questo è notevolmente più lento rispetto all'aumento della "Lunghezza massima" (vedi altra risposta).
sleske,

eclipse non è abbastanza contento della tua idea .. Ho provato questo e aspetto da 30 minuti ormai, per qualsiasi risposta di eclissi .. Buuut: sembra funzionare;)
Joshit

22

Se hai una stringa davvero lunga, io uso una strategia diversa: scaricarla su un file. Ho uno snippet di codice che uso nella visualizzazione Display, che viene valutato per scaricare i dati in un file. Uso Commons IO, ma puoi farlo solo con i metodi JDK.

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

Naturalmente, avrai bisogno del Commons IO JAR nel tuo percorso di classe affinché funzioni. In caso contrario, ricorrere al lavoro JDK.


5
soluzione alternativa. Personalmente, accetterei questo come migliore risposta. Avvertenza: <nome file> deve essere definito per il sistema su cui è in esecuzione JVM, il che fa la differenza se si esegue il debug remoto, nel qual caso il file verrà scritto sul sistema remoto, non sulla workstation su cui è in esecuzione eclipse .
Rexford,

18

Il modo migliore per visualizzare un valore String dalla vista debug eclipse è il seguente.

1) Passa alla vista di debug in Eclipse

2) Selezionare la variabile desiderata nel riquadro delle variabili.

3) Fare clic con il pulsante destro del mouse sull'area di visualizzazione del riquadro variabile in cui viene visualizzato il valore e fare clic su Lunghezza massima. Immettere il valore massimo del carattere nel riquadro Configura dettagli.

4) Saluti

inserisci qui la descrizione dell'immagine


1
Questa spiegazione grafica è davvero utile. +1
Bhavin Shah,

3

Quando il debugger raggiunge il punto in cui si desidera il valore String, digitare semplicemente un'istruzione sysOut

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

Seleziona sopra la frase, fai clic destro-> Esegui

Stampa il valore sulla console


0

Per il debug basato su javascript su eclipse, il metodo "cambia valore" e il metodo "Lunghezza massima" non sono riusciti per me, aggiungendo l'oggetto richiesto da guardare ( espressioni ) e quindi facendo clic con il pulsante destro del mouse sull'espressione controllata per selezionare "Carica valore completo" è l'unica soluzione che funziona per me, ma anche questo inserisce "\ n" indesiderato nell'output .

Nota : "Lunghezza massima" deve essere impostato affinché "Carica valore completo" funzioni poiché carica i valori fino alla lunghezza massima (il valore predefinito nell'eclissi è 10000). Fare riferimento alla risposta sopra per vedere come impostare la lunghezza massima.


0

Non esiste "maxLength" in Eclipse Mars. E il "valore di modifica" funziona solo con "Variabili", non "Espressioni", quindi nessuna delle precedenti funziona per me.

inserisci qui la descrizione dell'immagine

E, l'espressione è tagliata nel mezzo, non alla fine. Immagino che abbiano cambiato il comportamento predefinito.

L'unica cosa che funziona per me è espandere la larghezza della colonna del nome dell'espressione e fare clic sull'espressione per selezionarla tutta per vedere il contenuto integrale.


0

Nulla di quanto sopra ha funzionato per me, inoltre, alcuni elementi dell'interfaccia utente nel mio Eclipse non possono essere trovati come descritto. Sto usando STS 4.3.1.

Il valore di cui avevo bisogno era davvero grande, fa parte di un'enorme richiesta JSON. Per risolvere il problema, utilizzare un'espressione nella console Shell di debug di Eclipse e generare la sottostringa dell'intero valore. Dato che puoi vedere il valore parziale, ispezionalo e usa gli ultimi letterali come posizione per produrre il pezzo successivo della stringa. Ripeti questo approccio fino a ottenere ciò di cui hai bisogno:

String result = new String(reallyBigByteArrayValue, "UTF-8");
result.substring(result.indexOf("some-unique-text"));
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.