contentTracing

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

线程:主线程

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

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

const {app, contentTracing} = require('electron')

app.on('ready', () => {
  const options = {
    categoryFilter: '*',
    traceOptions: 'record-until-full,enable-sampling'
  }

  contentTracing.startRecording(options, () => {
    console.log('Tracing started')

    setTimeout(() => {
      contentTracing.stopRecording('', (path) => {
        console.log('Tracing data recorded to ' + path)
      })
    }, 5000)
  })
})

方法

contentTracing模块包含以下方法:

contentTracing.getCategories(callback)

  • callback Function
    • categories String[]

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

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

contentTracing.startRecording(options, callback)

  • options Object
    • categoryFilter String
    • traceOptions String
  • callback Function

开始记录所有进程。

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

categoryFilter 是一个用来控制哪些类别组需要被跟踪的过滤器。 过滤器可以有一个可选的-前缀来排除包含一个匹配类别的类别组。 同一个列表中,不支持既有包含的类别模式又有排除的类别模式。

示例:

  • test_MyTest*,
  • test_MyTest*,test_OtherStuff,
  • "-excluded_category1,-excluded_category2

traceOptions 控制哪种跟踪模式被启用,该属性值是一个逗号分隔列表。可能选项有:

  • record-until-full
  • record-continuously
  • trace-to-console
  • enable-sampling
  • enable-systrace

前3个选项是跟踪记录模式,因此是相互排斥的。 如果traceOptions字符串中出现多个跟踪记录模式,最后一个优先。 如果指定没有跟踪记录模式,那记录模式就是record-until-full

在从traceOptions解析的选项应用于它之前,跟踪选项将首先被重置为默认选项(record_mode 设置为 record-until-full, enable_samplingenable_systrace 设置为 false)。

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

Start monitoring on all processes.

Monitoring begins immediately locally and asynchronously on child processes as soon as they receive the startMonitoring request.

Once all child processes have acknowledged the startMonitoring request the callback will be called.

contentTracing.stopMonitoring(callback)

  • callback Function

Stop monitoring on all processes.

Once all child processes have acknowledged the stopMonitoring request the callback is called.

contentTracing.captureMonitoringSnapshot(resultFilePath, callback)

  • resultFilePath String
  • callback Function
    • resultFilePath String

Get the current monitoring traced data.

子进程通常缓存跟踪数据,并且很少清空和发送跟踪数据回到主进程。 This is because it may be an expensive operation to send the trace data over IPC and we would like to avoid unneeded runtime overhead from tracing. So, to end tracing, we must asynchronously ask all child processes to flush any pending trace data.

Once all child processes have acknowledged the captureMonitoringSnapshot request the callback will be called with a file that contains the traced data.

contentTracing.getTraceBufferUsage(callback)

  • callback Function
    • value Number
    • percentage Number

Get the maximum usage across processes of trace buffer as a percentage of the full state. When the TraceBufferUsage value is determined the callback is called.



相关npm包集合




相关站点资源





向导

API文档

在主进程内可用的模块:

在渲染进程(网页)内可用的模块:

在两种进程中都可用的模块:

高级

  • electron如何集成绿色版flash插件?跨平台终极版
  • 如何利用mt.exe改造electron程序,主动申请管理员权限
  • JS开发者社区

    和大家在一起

    新手/专属新手 685983304
    中级/30元中级 642625556
    高级/50元高级 602866851
    PHP/福利PHP 218127186

    付费二次定制

    如果您需要付费解决问题,请发送需求到 support@wanlaiwang.com
    售前专员会在一到两个工作日内,评估难度并回复报价。 点击这里给我发消息1833669936