java - eclipse 调试变量导出或打印

标签 java eclipse debugging tomcat

我目前正在从一个大约 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(),因此在调试时您可以:

  1. 右键单击有趣的变量(有趣类的有趣实例) d
  2. 点击“新建详细信息格式化程序”
  3. 添加以下代码片段: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/

相关文章:

android - 无法为调试器绑定(bind)到本地 86XX

java - 当我的测试失败且 chrome 浏览器关闭之前(@After)时,如何对 chrome 浏览器进行屏幕截图

java - 在tomcat中部署

java - 在 Eclipse Mars 中找不到 Tomcat Runtime

java - 在 Eclipse 中从 Java 访问 Scala 实例变量

debugging - 使valgrind在第一个错误后立即停止

php - 使用 XDebug 和 Eclipse 逐步执行页面?

ruby - 如何调试 Ruby gem? ( compass )

java - 在 jgrapht 中修剪有向无环图的更有效方法?

java - Android:以编程方式设置方向需要时间,直到布局实际发生变化