Intellij Idea 是否保存IntelliJ调试中的对象状态?

umuewwlo  于 2022-11-28  发布在  其他
关注(0)|答案(6)|浏览(216)

有人知道在调试时是否可以保存对象的状态吗?
我想比较一个对象在两个不同执行周期中的状态。

**附加问题:**任何有编写IntelliJ插件经验的人?IntelliJ SDK允许在调试模式下访问调试值吗?从IntelliJ缓存中读取它们并将它们写入磁盘?

wsxa1bj1

wsxa1bj11#

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

iih3973s

iih3973s2#

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

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

然后从结果中复制值。
下面是IntelliJ IDEA上的一个示例:

vddsk6oq

vddsk6oq3#

我保存对象状态的最佳解决方案是,当对象处于所需状态时,使用Evaluate工具,并使用Gson库将其转换为JSON,然后在测试设置时,我将JSON复制为String,并再次将其转换为Java对象。可能有点粗糙,但对于非常大且复杂的对象,它可以为您节省大量时间。

i1icjdpr

i1icjdpr4#

在IntelliJ 2016中,当您在调试时右击"变量"窗口中的变量时,您可以选择"查看文本"

798qvoo8

798qvoo85#

如果您可以保存每个对象(您不能选择要保存哪些对象),那么有一个插件可以做到这一点:https://plugins.jetbrains.com/plugin/14974-breakpoint-exporter-importer-with-variable-information

vohkndzv

vohkndzv6#

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

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

相关问题