3

現在、Windows 7 の Tomcat で実行され、「catalina jpda start」の使用を開始した約 100 MB の war ファイルからクラスをデバッグしています。その後、プロジェクトは Eclipse デバッガーにフックされます。

デバッグしているクラスが完全に初期化され、デバッグ パースペクティブの変数ビューが次のようになるポイントに到達しました。

:> this
:> referenceIds
:> arr$
   len$
   i$
:> id

:> は、オブジェクトを展開できることを示す白い右向きの三角形に似ているはずです。

「この」オブジェクト参照の詳細をオフサイトの別の開発者と共有する必要があり、彼は私を助けるために完全な内容を知る必要があります。しかし、a)すべて展開するオプションはありません(これらの展開三角形をクリックするのに90分を費やしましたが、まだ終わりにはほど遠いです。それは、ある種の再帰地獄のクリックソンのようなものでした)およびb)上記を右クリックして「変数のコピー」をクリックしてもつまり、「これ」で「変数のコピー」をクリックしても、非常に有益ではない情報が得られます。

REDACTEDProductsDataBuilder  (id=38)    
referenceIds    String[5]  (id=105) 
arr$    String[5]  (id=105) 
len$    5   
i$  3   
id  "4:REDACTEDUpsell" (id=117) 

これを行うためのより簡単な方法に関する情報を探し回りましたが、何も思いつきませんでした。私はEclipseデバッガーを使用するのが非常に新しいので、これに対する明らかな答えがあれば許してください。展開三角形をクリックするのに1日を費やすよりも簡単な方法は確かにありますか? ない場合、代替手段はありますか?

4

3 に答える 3

4

興味深いクラスにメソッドを実装できるtoJSON()ため、デバッグ中に次のことができます。

  1. 興味深い変数 (興味深いクラスの興味深いインスタンス) を右クリックします d
  2. 「新しい詳細フォーマッタ」をクリックします
  3. 次のコード スニペットを追加します。this.toJSON()

すると、変数の表現が変わります。

toJSON()通常、以下のように、Jackson lib を使用してすべてのオブジェクト グラフを出力するメソッドを実装します。

String res="";
ObjectMapper objectMapper=new ObjectMapper();   
objectMapper.enableDefaultTyping(ObjectMapper.DefaultTyping.NON_CONCRETE_AND_ARRAYS);
res=objectMapper.writeValueAsString(this);
return res;
于 2013-03-29T17:38:58.563 に答える
3

システムのクリップボードに配置するオブジェクト グラフ全体の適切な表現を Eclipse が選択するのは難しいため、これを行う簡単な方法はないようです。

デバッグを容易にするために、問題のクラスの重要なフィールドを toString() 表現に含めることをお勧めします。

別の方法として、アプリケーションのヒープ ダンプを取得し、これをリモートの開発者に送信することを検討することもできます。ヒープ ダンプは、アプリのメモリ ヒープ全体のバイナリ表現であり、 Eclipse メモリ アナライザーjhatなど、ヒープを調べるために使用できるツールがたくさんあります。

于 2012-09-05T14:04:20.160 に答える
0

Eclipse 変数ビューの拡張機能であるこのユーティリティ(「eVars」) を見つけました。試したことはありませんが、変数を読み込んで保存する機能があると思われます。

于 2016-08-05T16:25:45.767 に答える