跳转到主要内容

contentTracing

从 Chromium 收集跟踪数据,以查找性能瓶颈和慢速操作。

进程:主进程

此模块不包含 Web 界面。要查看记录的跟踪,请使用 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 string (可选)

返回 Promise<string> - 在所有子进程确认 stopRecording 请求后,以包含跟踪数据的文件的路径形式解析。

停止所有进程上的记录。

子进程通常会缓存跟踪数据,很少刷新并将其发送回主进程。这有助于最大限度地减少跟踪的运行时开销,因为通过 IPC 发送跟踪数据可能是一项昂贵的操作。因此,要结束跟踪,Chromium 会异步请求所有子进程刷新任何待处理的跟踪数据。

跟踪数据将写入 resultFilePath。如果 resultFilePath 为空或未提供,跟踪数据将写入一个临时文件,并在 Promise 中返回路径。

contentTracing.getTraceBufferUsage()

返回 Promise<Object> - 以一个对象形式解析,该对象包含跟踪缓冲区最大使用量的 valuepercentage

  • value number
  • percentage number

以百分比形式获取所有进程的跟踪缓冲区最大使用量。