跳到主要内容

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

获取所有进程中追踪缓冲区的最大使用量占满状态的百分比。