【发布时间】:2013-07-05 06:09:41
【问题描述】:
我正在开发一个测试套件(作为 Chrome 扩展程序实现),它使用 Chrome/Chromium 的远程调试协议以编程方式获取和分析堆快照。因为Profiler.* 似乎不是公共协议的一部分,所以我使用this page 作为参考。
现在,我可以通过调用HeapProfiler.takeHeapSnapshot 来获取堆快照,如下面的 sn-p 所示。但是,当我尝试调用 HeapProfiler.getHeapSnapshot 时,我的回调完全被忽略了。
var debuggerId = {tabId: sender.tab.id};
chrome.debugger.attach(debuggerId, "1.0", function() {
var listener = function(source, method, params) {
if(source.tabId === debuggerId.tabId) {
if(method === "HeapProfiler.addProfileHeader") {
var uid = params.header.uid;
chrome.debugger.sendCommand(debuggerId, "HeapProfiler.getHeapSnapshot", { uid: uid }, function() {
console.log("I never get called!");
});
chrome.debugger.onEvent.removeListener(listener);
}
}
};
chrome.debugger.onEvent.addListener(listener);
chrome.debugger.sendCommand(debuggerId, "HeapProfiler.takeHeapSnapshot", { reportProgress: false }, function() {
if(chrome.runtime.lastError) { console.error(chrome.runtime.lastError); }
});
});
【问题讨论】:
-
太棒了……正是我想要的。太糟糕了,其余的调试协议都没有记录。
标签: javascript google-chrome-extension google-chrome-devtools heap-memory