我目前正在从一个大约 100 兆的 war 文件中调试类,该文件在 Windows 7 下的 Tomcat 上运行并开始使用“catalina jpda start”,然后该项目被连接到 Eclipse 调试器中。
我已经到了我正在调试的类已经完全初始化并且调试透视图中的变量 View 看起来像这样的地步:
:> this
:> referenceIds
:> arr$
len$
i$
:> id
Where :> 应该类似于表示对象可以展开的白色右面三角形。
我需要与现场外的其他开发人员共享“this”对象引用详细信息,他需要知道完整内容才能帮助我。 但 a) 没有展开所有选项(我花了 90 分钟点击那些展开三角形,但仍远未完成,这就像某种形式的递归 hell 点击马拉松)和 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 调试器非常陌生,所以如果对此有明显的答案,请原谅我,肯定有比花一天时间单击扩展三角形更简单的方法吗?如果没有,我有其他选择吗?
最佳答案
您可以在有趣的类中实现方法 toJSON()
,因此在调试时您可以:
- 右键单击有趣的变量(有趣类的有趣实例) d
- 点击“新建详细信息格式化程序”
- 添加以下代码片段:
this.toJSON()
然后变量表示会改变。
通常我使用 Jackson lib 实现 toJSON()
方法来打印所有对象图,如下所示:
String res="";
ObjectMapper objectMapper=new ObjectMapper();
objectMapper.enableDefaultTyping(ObjectMapper.DefaultTyping.NON_CONCRETE_AND_ARRAYS);
res=objectMapper.writeValueAsString(this);
return res;
关于java - eclipse 调试变量导出或打印,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12282639/