【问题标题】:eclipse debug variables export or printeclipse 调试变量导出或打印
【发布时间】:2012-08-30 05:51:07
【问题描述】:

我目前正在调试一个 100 兆左右的 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 调试器方面非常新,所以如果有一个明显的答案,请原谅我,肯定有比花一天时间点击扩展三角形更简单的方法吗?如果没有,我还有其他选择吗?

【问题讨论】:

    标签: java eclipse debugging tomcat


    【解决方案1】:

    你可以在有趣的类中实现一个方法toJSON(),这样在调试的时候你可以:

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

    【讨论】:

      【解决方案2】:

      似乎没有一种简单的方法可以做到这一点,因为 Eclipse 很难为整个对象图选择一个合适的表示来放在系统剪贴板上。

      我建议为了帮助您进行调试,相关类的重要字段包含在它的 toString() 表示中。

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

      【讨论】:

      • 我们最终使用了 join.me,对于这种情况非常方便。将调查堆转储,谢谢。
      【解决方案3】:

      找到this utility(“eVars”),它是 Eclipse 变量视图的扩展。据说有加载和保存变量的能力,虽然我没试过。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2016-11-30
        • 2011-04-08
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多