Android Studio - 如何在调试器中区分两个嵌套对象?

时间:2017-11-29 08:15:14

标签: android-studio android-debug android-debugging

假设我有一个包含许多嵌套对象和名为credential的变量的对象:

enter image description here

恢复程序后,再次以不同的登录用户重新输入活动: enter image description here

将这两个对象一次性差异化的最佳方法是什么? .e.g accountName(字符串),isNew(布尔)变量,依此类推。

我尝试了“复制值”,然后“将值与剪贴板进行比较”,但它只能比较单个文本变量。 “查看文字”是一样的。

我也试过“Mark Object ...”,但它的对象会丢失而不是永久存储(重新输入class会覆盖对象):

enter image description here

那么有没有办法比较两个复杂的和嵌套的对象值?

[UPDATE]

我发现我可以按 shift Ctrl + A 突出显示全部然后 Ctrl + <要复制的kbd> C ,但是如果没有逐个展开它们,它仍然不会包含嵌套对象:

enter image description here

[更新2]:

我注意到shadow$__klass_对象似乎包含自身并导致无限的嵌套属性。但如果我可以排除这个对象名称或限制最大嵌套深度,它可以解决吗?

1 个答案:

答案 0 :(得分:1)

您可以开发实用程序方法并将其保存在项目中的某个位置,该项目接受两个对象并在eval表达式调试器窗口中调用它并查看差异。

您可以使用一些反射库或开发自己的反射库,它可以这样工作:通过反射遍历对象字段并构建映射,其中键包含字段的复合路径(fe fieldA.fieldANested.number)和它有价值。然后,可以非常轻松地比较两个对象的两个映射,您可以在调试器中看到差异