Affichage des chaînes complètes lors du débogage dans Eclipse

166

Lors du débogage du code Java, les chaînes dans les vues "Variables" et "Expressions" ne s'affichent que jusqu'à une certaine longueur, après quoi Eclipse affiche "..."

Existe-t-il un moyen d'inspecter la chaîne entière? (Cela facilite l'ajout d'instructions de journalisation pour le débogage partout)

ragebiswas
la source
où voyez-vous ce comportement? quelle partie du débogueur?
skaffman
En passant, cela peut être un abus de langage, car cela peut ne pas fonctionner pour vous, mais si vous utilisez une bibliothèque de débogage comme java.util.logging ou log4j, vous pouvez facilement transformer vos instructions de débogage (avec différents niveaux de débogage) en impressions ou dans les fichiers journaux et cela peut vous donner l'avantage que le passage au crible des chaînes dans la fenêtre de débogage pourrait ne pas le faire. Juste une pensée =)
corsiKa

Réponses:

225

Dans la vue Variables, vous pouvez faire un clic droit sur le volet Détails (la section où le contenu de la chaîne est affiché) et sélectionner le menu contextuel "Longueur max ...". La même longueur s'applique au popup d'inspecteur d'expression et à quelques autres endroits.

entrez la description de l'image ici

Eugène Kuleshov
la source
17
Bien meilleure solution que celle choisie. Je vous remercie!
Colin
13
Il est bon de souligner que le volet Détails est la section où le contenu de la chaîne est affiché.
Bnrdo
1
Comment faire cela dans Eclipse Kepler? Pls help
Foolish
1
La bonne nouvelle est que ce changement semble également affecter la longueur affichée lors du survol d'une variable, de l'inspection dans la fenêtre "Inspecter" ou de la vue "Expressions" et de l'affichage des valeurs dans la vue "Affichage".
Steve Chambers
1
J'ai mis à jour la bonne solution (celle acceptée plus tôt était la seule solution pour les très anciennes versions d'Eclipse).
ragebiswas le
134

Dans la vue Variables, cliquez avec le bouton droit sur la variable et sélectionnez Modifier la valeur . Si votre variable est énorme, vous devez attendre quelques minutes (dans ce cas, Eclipse ne répond pas aux commandes) mais à la fin, Eclipse affichera entièrement votre variable.

Umberto
la source
2
Je peux voir seulement "data:image/bitmap;base64,/9j/4AAQSkZJRgABAQAAAQABAAD/2wBDAAEBAQEBAQEBAQEBAQEBAQE... (length: 22869)". L'option "Longueur max." Ne fonctionne pas et "Modifier la valeur" également.
falko
@falko "Max Length" ne fonctionnait pas pour moi, "Change value" était ok (après avoir attendu quelques secondes, selon la longueur variable).
Umberto
Au moins sur mon système, c'est considérablement plus lent que d'augmenter "Max Length" (voir autre réponse).
sleske
eclipse n'est pas tout à fait content de votre idée .. J'ai essayé ceci et j'attends depuis 30mins maintenant, pour toute réponse d'éclipse .. Buuut: Cela semble fonctionner;)
Joshit
22

Si vous avez une très longue chaîne, j'utilise une stratégie différente: la vider dans un fichier. J'ai un extrait de code que j'utilise dans la vue Affichage, qui est évalué pour vider les données dans un fichier. J'utilise Commons IO, mais vous pouvez le faire avec les méthodes JDK uniquement.

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

Naturellement, vous aurez besoin du fichier JAR Commons IO dans votre chemin de classe pour que cela fonctionne. Si vous ne le faites pas, faites appel au travail JDK.

zvikico
la source
5
solution de contournement cool. Personnellement, j'accepterais celle-ci comme la meilleure réponse. Avertissement: <filename> doit être défini pour le système sur lequel la JVM est exécutée, ce qui fait une différence si vous effectuez un débogage à distance, auquel cas le fichier sera écrit sur le système distant, pas sur le poste de travail où eclipse est en cours d'exécution .
rexford
18

La meilleure façon d'afficher une valeur de chaîne à partir de la vue de débogage eclipse est la suivante.

1) Basculer vers la vue de débogage dans Eclipse

2) Sélectionnez la variable souhaitée dans le volet des variables.

3) Cliquez avec le bouton droit sur la zone d'affichage du volet variable où la valeur est affichée et cliquez sur Longueur max. Entrez la valeur maximale du caractère dans le volet Configurer les détails.

4) Acclamations

entrez la description de l'image ici

Waqas Ahmed
la source
1
Cette explication graphique est vraiment utile. +1
Bhavin Shah
3

Lorsque le débogueur atteint le point où vous voulez la valeur String, tapez simplement une instruction sysOut

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

Sélectionnez la déclaration ci-dessus, clic droit-> Exécuter

Il imprimera la valeur sur la console

Sonali
la source
0

Pour le débogage basé sur javascript sur eclipse, la méthode «change value» et la méthode «Max length» ont toutes deux échoué pour moi, l'ajout de l'objet requis à surveiller ( Expressions ), puis un clic droit sur l'expression surveillée pour sélectionner «Load Full Value» est la seule solution cela fonctionne pour moi, mais même cela insère des "\ n" indésirables dans la sortie .

Remarque - "Longueur maximale" doit être définie pour que "Charger la valeur totale" fonctionne car il charge les valeurs jusqu'à la longueur maximale (la valeur par défaut dans eclipse est de 10000). Reportez-vous à la réponse ci-dessus pour voir comment définir la longueur maximale.

Prince Champappilly
la source
0

Il n'y a pas de "maxLength" dans Eclipse Mars. Et, la "valeur de changement" ne fonctionne qu'avec "Variables", pas "Expressions", donc aucun des éléments ci-dessus ne fonctionne pour moi.

entrez la description de l'image ici

Et, l'expression est coupée au milieu, pas à la fin. Je suppose qu'ils ont changé le comportement par défaut.

La seule chose qui fonctionne pour moi, c'est d'agrandir la largeur de la colonne du nom de l'expression, et de cliquer sur l'expression pour tout sélectionner pour voir le contenu complet.

WesternGun
la source
0

Rien de ce qui précède n'a fonctionné pour moi, de plus, certains éléments de l'interface utilisateur de mon Eclipse ne peuvent pas être trouvés comme décrit. J'utilise STS 4.3.1.

La valeur dont j'avais besoin était vraiment grande, cela fait partie d'une énorme demande JSON. La solution de contournement consiste à utiliser une expression dans la console Eclipse Debug Shell et à générer la sous-chaîne de la valeur entière. Puisque vous pouvez voir la valeur partielle, inspectez-la et utilisez les derniers littéraux comme position pour afficher le morceau suivant de la chaîne. Répétez cette approche jusqu'à obtenir ce dont vous avez besoin:

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