Eclipse调试变量导出或打印

3
我目前正在调试一个大约100兆的war文件中的类,该war文件在Windows 7上运行Tomcat,并使用“catalina jpda start”启动,然后将项目连接到Eclipse调试器。
我已经达到了调试的步骤,其中我要调试的类已经完全初始化,并且调试视角中的变量视图看起来像:
:> this
:> referenceIds
:> arr$
   len$
   i$
:> id

“Where :>”应该代表了指示对象可以展开的白色向右三角形。

我需要与另一个远程开发人员共享“this”对象引用的详细信息,他需要知道全部内容以帮助我。 但是: a)没有全部展开选项(我点击那些展开三角形花了90分钟,还没结束,就像某种递归地狱的点击马拉松) b)即使我右键单击上面并单击“复制变量”,它也不会给我扩展信息,即在“this”上点击“复制变量”会给我非常不具信息性的:

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

我找过各种信息,试图找到更简单的方法来完成这个任务,但都没有成功。我对使用eclipse调试器非常陌生,如果有显而易见的答案,请原谅我的无知。难道没有比花一整天点击展开三角形更简单的方法吗?如果没有,我是否有其他选择?

3个回答

4
您可以在有趣的类中实现一个 toJSON() 方法,这样在调试时,您可以执行以下操作:
  1. 右键单击有趣的变量(有趣类的有趣实例)
  2. 单击“新建详细格式化程序”
  3. 添加以下代码片段:this.toJSON()
然后,变量表示将发生变化。
通常,我使用 Jackson 库实现 toJSON() 方法来打印所有对象图,如下所示:
String res="";
ObjectMapper objectMapper=new ObjectMapper();   
objectMapper.enableDefaultTyping(ObjectMapper.DefaultTyping.NON_CONCRETE_AND_ARRAYS);
res=objectMapper.writeValueAsString(this);
return res;

3

似乎没有简单的方法来实现这一点,因为Eclipse很难选择适当的表示方法来放置整个对象图形到系统剪贴板中。

我建议在toString()表示法中包括所讨论的类的重要字段以帮助调试。

或者您可以考虑获取应用程序的堆转储,并将其发送给远程开发人员。 堆转储是应用程序整个内存堆的二进制表示,有许多工具可用于检查其中之一,例如Eclipse Memory Analyzerjhat


最终我们使用了join.me,非常适合这种情况。谢谢你提供的堆转储建议,我们会研究一下。 - Saf

0
发现了一个名为this utility(“eVars”)的工具,它是Eclipse变量视图的扩展。据说它可以加载和保存变量,不过我还没有尝试过。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接