在远程调试期间如何比较RemoteObject?

时间:2012-10-12 00:10:34

标签: remote-debugging google-chrome-devtools

我指的是RemoteObjects specified in the Chrome Debugging API 1.0 documentation

背景

我试图将后续呼叫帧与之前的呼叫帧相关联。

让我们说: 我在函数abcd上设置了断点。 我执行以下操作: a(b(c(d())));

执行暂停,我收到每个功能的Debugger.paused通知,并且每次都恢复。 在每个Debugger.paused通知中,我会收到CallFrame个数组。但是,每个objectId对象中的CallFrame及其属性都是唯一的。因此,我无法通过id来比较它们。

任何人都知道某种方法吗?

Runtime.callFunctionOnRuntime.evaluate允许我根据他们的ID在单个对象上执行代码,但是,它似乎不允许我在多个上执行代码em>对象所以我不能像检查CallFrameA.objectX === CallFrameB.objectY那样做(例如)。

我也不确定是否通过API检索对象并进行深度相等检查是个好主意。一种方法是进行递归Runtime.getProperties调用并检查除了唯一objectId之外的所有属性的相等性。

1 个答案:

答案 0 :(得分:1)

  1. 我建议您针对Chromium或WebKit提出一个问题,以支持对象的唯一ID - 这是V8的本机调试协议实现的。

  2. 实际上,您可以通过 arguments 参数为Runtime.callFunctionOn提供几个ID。