跳到主要內容

contentTracing

從 Chromium 收集追蹤資料,以找出效能瓶頸和緩慢的操作。

程序:主程序

這個模組不包含網頁介面。若要檢視已記錄的追蹤,請使用 trace viewer,可在 Chrome 的 chrome://tracing 中找到。

注意: 在 app 模組的 ready 事件發射之前,您不應使用此模組。

const { app, contentTracing } = require('electron')

app.whenReady().then(() => {
(async () => {
await contentTracing.startRecording({
included_categories: ['*']
})
console.log('Tracing started')
await new Promise(resolve => setTimeout(resolve, 5000))
const path = await contentTracing.stopRecording()
console.log('Tracing data recorded to ' + path)
})()
})

方法

contentTracing 模組有以下方法

contentTracing.getCategories()

返回 Promise<string[]> - 一旦所有子程序都確認了 getCategories 請求,則解析為類別群組的陣列

取得一組類別群組。當到達新的程式碼路徑時,類別群組可能會變更。另請參閱 內建追蹤類別的清單

注意: Electron 新增了一個名為 "electron" 的非預設追蹤類別。此類別可用於捕獲 Electron 特定的追蹤事件。

contentTracing.startRecording(options)

返回 Promise<void> - 一旦所有子程序都確認了 startRecording 請求,則解析。

在所有程序上開始記錄。

記錄會立即在本地開始,並在子程序收到 EnableRecording 請求後立即非同步開始。

如果記錄已在執行中,則 promise 會立即解析,因為一次只能進行一個追蹤操作。

contentTracing.stopRecording([resultFilePath])

  • resultFilePath 字串 (選用)

返回 Promise<string> - 一旦所有子程序都確認了 stopRecording 請求,則解析為包含追蹤資料的檔案路徑

停止在所有程序上記錄。

子程序通常會快取追蹤資料,並且很少刷新並將追蹤資料發送回主程序。這有助於最大程度地減少追蹤的運行時開銷,因為透過 IPC 發送追蹤資料可能是一項昂貴的操作。因此,為了結束追蹤,Chromium 會非同步地要求所有子程序刷新任何待處理的追蹤資料。

追蹤資料將寫入 resultFilePath。如果 resultFilePath 為空或未提供,追蹤資料將寫入暫存檔,並且路徑將在 promise 中返回。

contentTracing.getTraceBufferUsage()

返回 Promise<Object> - 解析為一個物件,其中包含追蹤緩衝區最大使用量的 valuepercentage

  • value 數字
  • percentage 數字

取得跨程序的追蹤緩衝區最大使用量,以完整狀態的百分比表示。