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>
- 解析為一個物件,其中包含追蹤緩衝區最大使用量的 value
和 percentage
value
數字percentage
數字
取得跨程序的追蹤緩衝區最大使用量,以完整狀態的百分比表示。