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>
- 解析为一个对象,其中包含追踪缓冲区最大使用量的 value
和 percentage
。
value
numberpercentage
number
获取所有进程中追踪缓冲区的最大使用量占满状态的百分比。