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>
- 解析为包含追踪缓冲区最大使用量 value
和 percentage
的对象。
value
数字percentage
数字
获取跨进程的追踪缓冲区最大使用量,表示为完整状态的百分比。