在IntelliJ调试中保存对象的状态?

时间:2016-04-01 12:11:08

标签: java debugging intellij-idea intellij-plugin

有人知道在调试时是否可以保存对象的状态?

我想在两个不同的执行周期中比较一个对象的状态。

奖金问题:有写IntelliJ插件经验的人吗? IntelliJ SDK是否允许在调试模式下访问调试值?从IntelliJ缓存中读取它们并将它们写入磁盘?

6 个答案:

答案 0 :(得分:18)

作为一个非常简单的解决方案,您可以对 Variables Watches 视图中的对象使用完全展开树节点操作。默认情况下,此操作绑定到 Numpad * 键( * ),并打开整个对象树。然后用shift选择已打开对象树的所有元素,并将它们复制到剪贴板。

答案 1 :(得分:2)

保存对象状态的最佳方法是在对象处于所需状态时使用评估工具,并使用Gson库将其转换为JSON,然后在测试设置中将JSON复制为String并转换再次将其转换为Java对象。可能有些粗鲁,但对于真正大型和复杂的对象,可以节省很多时间。

答案 2 :(得分:1)

要扩展Josep的答案,最好的选择是将Google's Gson library导入项目并运行:

Gson gson = new Gson();
gson.toJson(yourObject);

然后从结果中复制值。

以下是IntelliJ IDEA的示例:

example

答案 3 :(得分:1)

如果可以保存每个对象(不能选择要保存的对象),那么可以使用一个插件: https://plugins.jetbrains.com/plugin/14974-breakpoint-exporter-importer-with-variable-information

答案 4 :(得分:0)

在IntelliJ 2016中,在调试时右键单击“变量”窗口中的变量时,可以选择“查看文本”

答案 5 :(得分:0)

添加以下示例代码,它将以json形式显示数据:

ObjectMapper mapper = new ObjectMapper();
  try {
    String sample = mapper.writeValueAsString(Your object);
    System.out.println(sample);
  } catch (JsonProcessingException e) {
    e.printStackTrace();
  }