Electron contentTracing 模塊

2019-08-14 19:21 更新

content-tracing 模塊是用來(lái)收集由底層的Chromium content 模塊 產(chǎn)生的搜索數(shù)據(jù). 這個(gè)模塊不具備web接口,所有需要我們?cè)赾hrome瀏覽器中添加 chrome://tracing/ 來(lái)加載生成文件從而查看結(jié)果.

const contentTracing = require('electron').contentTracing;

const options = {
  categoryFilter: '*',
  traceOptions: 'record-until-full,enable-sampling'
}

contentTracing.startRecording(options, function() {
  console.log('Tracing started');

  setTimeout(function() {
    contentTracing.stopRecording('', function(path) {
      console.log('Tracing data recorded to ' + path);
    });
  }, 5000);
});

方法

content-tracing 模塊的方法如下:

contentTracing.getCategories(callback)

  • callback Function

獲得一組分類組. 分類組可以更改為新的代碼路徑。

一旦所有的子進(jìn)程都接受到了getCategories方法請(qǐng)求, 分類組將調(diào)用 callback.

contentTracing.startRecording(options, callback)

  • options Object
    • categoryFilter String
    • traceOptions String
  • callback Function

開始向所有進(jìn)程進(jìn)行記錄.(recording)

一旦收到可以開始記錄的請(qǐng)求,記錄將會(huì)立馬啟動(dòng)并且在子進(jìn)程是異步記錄聽的. 當(dāng)所有的子進(jìn)程都收到 startRecording 請(qǐng)求的時(shí)候,callback 將會(huì)被調(diào)用.

categoryFilter是一個(gè)過(guò)濾器,它用來(lái)控制那些分類組應(yīng)該被用來(lái)查找.過(guò)濾器應(yīng)當(dāng)有一個(gè)可選的 - 前綴來(lái)排除匹配的分類組.不允許同一個(gè)列表既是包含又是排斥.

例子:

  • test_MyTest*,
  • test_MyTest*,test_OtherStuff,
  • "-excluded_category1,-excluded_category2

traceOptions 控制著哪種查找應(yīng)該被啟動(dòng),這是一個(gè)用逗號(hào)分隔的列表.可用參數(shù)如下:

  • record-until-full
  • record-continuously
  • trace-to-console
  • enable-sampling
  • enable-systrace

前3個(gè)參數(shù)是來(lái)查找記錄模塊,并且以后都互斥.如果在traceOptions 中超過(guò)一個(gè)跟蹤 記錄模式,那最后一個(gè)的優(yōu)先級(jí)最高.如果沒(méi)有指明跟蹤 記錄模式,那么它默認(rèn)為 record-until-full.

 traceOptions 中的參數(shù)被解析應(yīng)用之前,查找參數(shù)初始化默認(rèn)為 (record_mode 設(shè)置為 record-until-full, enable_sampling  enable_systrace 設(shè)置為 false).

contentTracing.stopRecording(resultFilePath, callback)

  • resultFilePath String
  • callback Function

停止對(duì)所有子進(jìn)程的記錄.

子進(jìn)程通常緩存查找數(shù)據(jù),并且僅僅將數(shù)據(jù)截取和發(fā)送給主進(jìn)程.這有利于在通過(guò) IPC 發(fā)送查找數(shù)據(jù)之前減小查找時(shí)的運(yùn)行開銷,這樣做很有價(jià)值.因此,發(fā)送查找數(shù)據(jù),我們應(yīng)當(dāng)異步通知所有子進(jìn)程來(lái)截取任何待查找的數(shù)據(jù).

一旦所有子進(jìn)程接收到了 stopRecording 請(qǐng)求,將調(diào)用 callback ,并且返回一個(gè)包含查找數(shù)據(jù)的文件.

如果 resultFilePath 不為空,那么將把查找數(shù)據(jù)寫入其中,否則寫入一個(gè)臨時(shí)文件.實(shí)際文件路徑如果不為空,則將調(diào)用 callback .

contentTracing.startMonitoring(options, callback)

  • options Object
    • categoryFilter String
    • traceOptions String
  • callback Function

開始向所有進(jìn)程進(jìn)行監(jiān)聽.(monitoring)

一旦收到可以開始監(jiān)聽的請(qǐng)求,記錄將會(huì)立馬啟動(dòng)并且在子進(jìn)程是異步記監(jiān)聽的. 當(dāng)所有的子進(jìn)程都收到 startMonitoring 請(qǐng)求的時(shí)候,callback 將會(huì)被調(diào)用.

contentTracing.stopMonitoring(callback)

  • callback Function

停止對(duì)所有子進(jìn)程的監(jiān)聽.

一旦所有子進(jìn)程接收到了 stopMonitoring 請(qǐng)求,將調(diào)用 callback .

contentTracing.captureMonitoringSnapshot(resultFilePath, callback)

  • resultFilePath String
  • callback Function

獲取當(dāng)前監(jiān)聽的查找數(shù)據(jù).

子進(jìn)程通常緩存查找數(shù)據(jù),并且僅僅將數(shù)據(jù)截取和發(fā)送給主進(jìn)程.因?yàn)槿绻苯油ㄟ^(guò) IPC 來(lái)發(fā)送查找數(shù)據(jù)的代價(jià)昂貴,我們寧愿避免不必要的查找運(yùn)行開銷.因此,為了停止查找,我們應(yīng)當(dāng)異步通知所有子進(jìn)程來(lái)截取任何待查找的數(shù)據(jù).

一旦所有子進(jìn)程接收到了 captureMonitoringSnapshot 請(qǐng)求,將調(diào)用 callback ,并且返回一個(gè)包含查找數(shù)據(jù)的文件.

contentTracing.getTraceBufferUsage(callback)

  • callback Function

通過(guò)查找 buffer 進(jìn)程來(lái)獲取百分比最大使用量.當(dāng)確定了TraceBufferUsage 的值確定的時(shí)候,就調(diào)用 callback .

contentTracing.setWatchEvent(categoryName, eventName, callback)

  • categoryName String
  • eventName String
  • callback Function

任意時(shí)刻在任何進(jìn)程上指定事件發(fā)生時(shí)將調(diào)用 callback .

contentTracing.cancelWatchEvent()

取消 watch 事件. 如果啟動(dòng)查找,這或許會(huì)造成 watch 事件的回調(diào)函數(shù) 出錯(cuò).

以上內(nèi)容是否對(duì)您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號(hào)
微信公眾號(hào)

編程獅公眾號(hào)