Eclipseでデバッグ中に完全な文字列を表示する


166

Javaコードのデバッグ中、ビュー「変数」と「式」の文字列は特定の長さまでしか表示されません。その後、Eclipseは「...」を表示します。

文字列全体を検査する方法はありますか?(これにより、どこでもデバッグするためのロギングステートメントを追加する手間が軽減されます)


あなたはこの行動をどこで見ていますか?デバッガのどの部分ですか?
skaffman、

余談ですが、機能しない可能性があるため、これは誤った名前になる可能性がありますが、java.util.loggingやlog4jなどのデバッグライブラリを使用すると、デバッグステートメント(さまざまなレベルのデバッグ)を簡単にプリントアウトまたはログファイルに出力すると、デバッグウィンドウで文字列をふるいにかけない場合と比べて、優位に立つことができます。Just a
Thought

回答:


225

変数ビューで、詳細ペイン(文字列コンテンツが表示されるセクション)を右クリックして、[最大長...]ポップアップメニューを選択できます。同じ長さが、式インスペクターのポップアップと他のいくつかの場所に適用されます。

enter image description here


17
選択したソリューションよりもはるかに優れたソリューション。ありがとうございました!
Colin

13
詳細ペインは文字列コンテンツが表示されるセクションであることを指摘しておくとよいでしょう。
Bnrdo 14年

1
日食ケプラーでこれを行う方法?Plsのヘルプ
愚かな

1
この変更は、変数にカーソルを合わせ、[検査]ウィンドウまたは[式]ビューで検査し、[表示]ビューに値を表示するときに表示される長さに影響するようです。
Steve Chambers

1
私は正しいソリューションを更新しました(以前に受け入れられたものは、本当に古いEclipseバージョンの唯一のソリューションでした)。
ragebiswas

134

では変数は、変数を右クリックし、表示値の変更を。変数が大きい場合、数分待つ必要があります(この場合、Eclipseはコマンドに応答しません)が、最終的にEclipseは変数を完全に表示します。


2
しか見えない"data:image/bitmap;base64,/9j/4AAQSkZJRgABAQAAAQABAAD/2wBDAAEBAQEBAQEBAQEBAQEBAQE... (length: 22869)"。「最大長」オプションが機能せず、「値を変更」も設定します。
ファルコ2014

@falko「最大長」は機能しませんでした。「値を変更」は問題ありませんでした(可変長に応じて、数秒待った後)。
ウンベルト

少なくとも私のシステムでは、これは「最大長」を増やすよりもかなり遅くなります(他の回答を参照)。
sleske 2015年

日食は、あなたのアイデアについてはかなり満足していない..ですアイブ氏はこれを試して、私は日食.. Buuutのいずれかの応答のために、今30分以降待つ:それは仕事に思える;)
Joshit

22

本当に長い文字列がある場合は、別の方法を使用します。それをファイルにダンプします。データをファイルにダンプするために評価される、Displayビューで使用するコードのスニペットがあります。Commons IOを使用していますが、JDKのみのメソッドで実行できます。

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

もちろん、それを機能させるには、クラスパスにCommons IO JARが必要です。そうでない場合は、JDKを使用してください。


5
クールな回避策。私は個人的に、これをベストアンサーとして受け入れます。警告:<ファイル名>は、JVMが実行されているシステムに対して定義する必要があります。これは、リモートデバッグの場合に違いがあります。この場合、ファイルは、Eclipseが実行されているワークステーションではなく、リモートシステムに書き込まれます。 。
レックスフォード、2015

18

Eclipseデバッグビューから文字列値を表示する最良の方法は次のとおりです。

1)Eclipseでデバッグビューに切り替えます

2)変数ペインで目的の変数を選択します。

3)値が表示されている変数ペインの表示領域を右クリックし、[最大長]をクリックします。[詳細の構成]ウィンドウに最大文字数を入力します。

4)乾杯

ここに画像の説明を入力してください


1
このグラフィカルな説明は本当に役に立ちます。+1
Bhavin Shah

3

デバッガーがストリング値を必要とするポイントに到達したら、sysOutステートメントを入力するだけです。

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

上記のステートメントを選択し、右クリック->実行

コンソールに値を出力します


0

EclipseでのJavaScriptベースのデバッグの場合、「値の変更」メソッドと「最大長」メソッドの両方が失敗しました。必要なオブジェクトをwatch(Expressions)に追加し、監視された式を右クリックして「Load Full Value」を選択することが唯一の解決策ですそれは私にとってはうまくいきますが、これでも出力に不要な「\ n」が挿入されます

-「最大長」は、「最大値をロード」が最大長まで値をロードするときに機能するように設定する必要があります(Eclipseのデフォルトは10000です)。最大長の設定方法については、上記の回答を参照してください。


0

Eclipse Marsには「maxLength」はありません。また、「値の変更」は「変数」でのみ機能し、「式」では機能しないため、上記のいずれも機能しません。

ここに画像の説明を入力してください

そして、表現は最後ではなく、途中でカットされます。彼らはデフォルトの動作を変更したと思います。

私にとって唯一有効なのは、式名の列の幅を拡張し、式をクリックしてすべてを選択して、完全な長さのコンテンツを表示することです。


0

上記のことは何もうまくいきませんでした。さらに、私のEclipseの一部のユーザーインターフェイス要素が説明のように見つかりません。STS 4.3.1を使用しています。

必要な値は本当に大きく、巨大なJSONリクエストの一部です。回避策は、Eclipse Debug Shellコンソールで式を使用し、値全体のサブストリングを出力することです。部分的な値が表示されるので、それを調べて、最後のいくつかのリテラルを文字列の次のチャンクを出力する位置として使用します。必要なものが得られるまで、このアプローチを繰り返します。

String result = new String(reallyBigByteArrayValue, "UTF-8");
result.substring(result.indexOf("some-unique-text"));
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.