跳到主要内容

contentTracing

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

进程:主进程

此模块不包含 Web 界面。 要查看记录的跟踪,请使用跟踪查看器,可在 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 数字

获取跨进程的跟踪缓冲区最大使用量,以占完整状态的百分比表示。