contentTracing

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

进程:主进程

该模块不包含网页接口,所以你需要在Chrome浏览器打开chrome://tracing/页面,然后加载生成的文件来查看结果。

注意:在应用程序模块的 ready 事件触发之前,您不应该使用此模块。

  1. const { app, contentTracing } = require('electron')
  2. app.on('ready', () => {
  3. const options = {
  4. categoryFilter: '*',
  5. traceOptions: 'record-until-full,enable-sampling'
  6. }
  7. contentTracing.startRecording(options, () => {
  8. console.log('Tracing started')
  9. setTimeout(() => {
  10. contentTracing.stopRecording('', (path) => {
  11. console.log('Tracing data recorded to ' + path)
  12. })
  13. }, 5000)
  14. })
  15. })

方法

contentTracing模块包含以下方法:

contentTracing.getCategories(callback)

  • callback Function - 回调函数

    • categories String[]
      获取一个类别组的集合。随着能访问的新的代码路径不一样,获取的类别组对象也会不一样。

一旦所有子进程确认getCategories请求之后,传递类别组数组参数的callback就会被调用。

contentTracing.startRecording(options, callback)

一旦收到EnableRecording请求,记录立即在本地开始进行,并在子进程上异步执行。 一旦所有子进程都确认了startRecording请求,callback就会被调用。

contentTracing.stopRecording(resultFilePath, callback)

  • resultFilePath String
  • callback Function - 回调函数

    • resultFilePath String
      停止所有进程记录。

子进程通常缓存跟踪数据,并且很少清空和发送跟踪数据回到主进程。 这有助于最小化运行时间开销,因为通过IPC发送跟踪数据可能是一个开销巨大的操作。 所以,为了结束跟踪,我们必须异步地要求所有子进程清空任何等待跟踪数据。

一旦所有子进程确认了 stopRecording请求,将传递包含跟踪数据的文件作为参数调用callback

如果resultFilePath不为空,则跟踪数据会被写入该路径,否则就被写入一个临时文件。实际的文件路径如果不为null的话就被传递给callback函数了。

contentTracing.startMonitoring(options, callback)

  • options Object

    • categoryFilter String
    • traceOptions String
  • callback Function
    开始记录所有进程。

一旦收到startMonitoring请求,监控立即在本地和异步的子进程上立即开始。

一旦所有子进程都确认了 startMonitoring 请求, 就会调用 callback

contentTracing.startMonitoring(options, callback)

  • callback Function
    停止对所有进程的监视。

一旦所有子进程都确认了 startMonitoring 请求, 就会调用 callback

contentTracing.startMonitoring(options, callback)

  • resultFilePath String
  • callback Function - 回调函数

    • resultFilePath String
      获取当前监控的跟踪数据

子进程通常缓存跟踪数据,并且很少清空和发送跟踪数据回到主进程。 通过IPC发送跟踪数据可能是一个开销巨大的操作,我们想避免跟踪时不必要的运行时开销。 因此, 为了结束跟踪, 我们必须异步请求所有子进程刷新所有挂起的跟踪数据。

一旦所有子进程都确认了 captureMonitoringSnapshot 请求, 就会使用包含跟踪数据的文件来调用 callback

contentTracing.startMonitoring(options, callback)

  • callback Function - 回调函数

    • value Number
    • percentage Number
      获取跟踪缓冲区进程的最大使用率,以百分比表示完整状态。当 TraceBufferUsage 值被确定后, 将调用 callback