Ale*_*eev 5 google-chrome remote-debugging
我使用远程调试协议为Google Chrome编写自定义调试器.我的调试器工作正常,除了它无法访问功能范围.我监听Debugger.paused事件和监听器得到的数组CallFrame.我closure从每个帧获得范围,因此我可以获得所有绑定变量及其属性.这些变量中有一些功能.我Runtime.getProperties将其中一个功能的ID 发布到Chrome并获取其属性.以下是我的回应:
{
"result":[
{
"configurable":false, "enumerable":false,
"isOwn":true, "name":"length",
"value":{
"description":"0",
"type":"number",
"value":0
},
"writable":false
}, {
"configurable":false, "enumerable":false,
"isOwn":true, "name":"name",
"value":{
"type":"string",
"value":""
},
"writable":false
}, {
"configurable":false, "enumerable":false,
"get":{
"className":"Function",
"description":"function ThrowTypeError() { [native code] }",
"objectId":"{\"injectedScriptId\":3,\"id\":34}",
"type":"function"
},
"isOwn":true,"name":"arguments",
"set":{
"className":"Function",
"description":"function ThrowTypeError() { [native code] }",
"objectId":"{\"injectedScriptId\":3,\"id\":35}",
"type":"function"
}
}, {
"configurable":false, "enumerable":false,
"get":{
"className":"Function",
"description":"function ThrowTypeError() { [native code] }",
"objectId":"{\"injectedScriptId\":3,\"id\":36}",
"type":"function"
},
"isOwn":true, "name":"caller",
"set":{
"className":"Function",
"description":"function ThrowTypeError() { [native code] }",
"objectId":"{\"injectedScriptId\":3,\"id\":37}",
"type":"function"
}
}, {
"configurable":false, "enumerable":false,
"isOwn":true, "name":"prototype",
"value":{
"className":"Object",
"description":"Object",
"objectId":"{\"injectedScriptId\":3,\"id\":38}",
"type":"object"
},
"writable":true
}, {
"configurable":true, "enumerable":false,
"isOwn":true, "name":"__proto__",
"value":{
"className":"Function",
"description":"function Empty() {}",
"objectId":"{\"injectedScriptId\":3,\"id\":39}",
"type":"function"
},
"writable":true
}
]
}
Run Code Online (Sandbox Code Playgroud)
如你所见,没有<function scope>财产.但是,当我调试相同的代码并停在同一位置时,我可以打开Closure- > $return- > <function scope>.我真的需要这个,因为$ return是在其范围内包含绑定变量的回调,所以通过回调闭包链我可以重建堆栈跟踪.
| 归档时间: |
|
| 查看次数: |
223 次 |
| 最近记录: |