4

私は、Chrome/Chromium のリモート デバッグ プロトコルを使用してヒープ スナップショットをプログラムで取得および分析するテスト スイート (Chrome 拡張機能として実装) に取り組んでいます。Profiler.*パブリック プロトコルの一部ではないように思われるため、このページを参照用に使用しています。

HeapProfiler.takeHeapSnapshot現在、以下のスニペットのように呼び出して、ヒープ スナップショットを取得できます。ただし、 を呼び出そうとすると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); }
    });
});
4

1 に答える 1