在 IntelliJ 调试中保存对象状态?
Save state of object in IntelliJ debug?
有谁知道是否可以在调试时保存对象的状态?
我想比较一个对象在两个不同执行周期中的状态。
奖励问题:有人有编写 IntelliJ 插件的经验吗? IntelliJ SDK 是否允许在调试模式下访问调试值?从 IntelliJ 缓存中读取它们并将它们写入磁盘?
作为一个非常简单的解决方案,您可以对 Variables 或 Watches 中的对象使用 Fully Expand Tree Node 操作 观看次数。此操作默认绑定到 Numpad * 键 (*) 并打开整个对象树。然后你 select 使用 shift 打开对象树的所有元素并将它们复制到剪贴板。
在 IntelliJ 2016 中,当您在调试 "Variables" window 中右键单击变量时,您可以选择 "View Text"
保存对象状态的最佳解决方法是在对象处于所需状态时使用评估工具,并使用 Gson 库将其转换为 JSON,然后在测试设置中复制JSON 作为字符串并再次将其转换为 Java 对象。可能有点粗糙,但对于非常大和复杂的对象,它可以为您节省很多时间。
为了扩展 Josep 的答案,最好的办法是将 Google's Gson library 导入到您的项目中,然后 运行:
Gson gson = new Gson();
gson.toJson(yourObject);
然后从结果中复制值。
这里有一个关于 IntelliJ IDEA 的例子:
添加以下示例代码,它将以 json 形式显示数据:
ObjectMapper mapper = new ObjectMapper();
try {
String sample = mapper.writeValueAsString(Your object);
System.out.println(sample);
} catch (JsonProcessingException e) {
e.printStackTrace();
}
如果您可以保存每个对象(您不能 select 保存哪些对象),那么可以使用一个插件:
https://plugins.jetbrains.com/plugin/14974-breakpoint-exporter-importer-with-variable-information
有谁知道是否可以在调试时保存对象的状态?
我想比较一个对象在两个不同执行周期中的状态。
奖励问题:有人有编写 IntelliJ 插件的经验吗? IntelliJ SDK 是否允许在调试模式下访问调试值?从 IntelliJ 缓存中读取它们并将它们写入磁盘?
作为一个非常简单的解决方案,您可以对 Variables 或 Watches 中的对象使用 Fully Expand Tree Node 操作 观看次数。此操作默认绑定到 Numpad * 键 (*) 并打开整个对象树。然后你 select 使用 shift 打开对象树的所有元素并将它们复制到剪贴板。
在 IntelliJ 2016 中,当您在调试 "Variables" window 中右键单击变量时,您可以选择 "View Text"
保存对象状态的最佳解决方法是在对象处于所需状态时使用评估工具,并使用 Gson 库将其转换为 JSON,然后在测试设置中复制JSON 作为字符串并再次将其转换为 Java 对象。可能有点粗糙,但对于非常大和复杂的对象,它可以为您节省很多时间。
为了扩展 Josep 的答案,最好的办法是将 Google's Gson library 导入到您的项目中,然后 运行:
Gson gson = new Gson();
gson.toJson(yourObject);
然后从结果中复制值。
这里有一个关于 IntelliJ IDEA 的例子:
添加以下示例代码,它将以 json 形式显示数据:
ObjectMapper mapper = new ObjectMapper();
try {
String sample = mapper.writeValueAsString(Your object);
System.out.println(sample);
} catch (JsonProcessingException e) {
e.printStackTrace();
}
如果您可以保存每个对象(您不能 select 保存哪些对象),那么可以使用一个插件: https://plugins.jetbrains.com/plugin/14974-breakpoint-exporter-importer-with-variable-information