非常教程

Electron参考手册

内容追踪 | contentTracing

内容追踪 | contentTracing

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

过程:主

该模块不包含Web界面,因此您需要chrome://tracing/在Chrome浏览器中打开并加载生成的文件以查看结果。

注意: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)
  })
})

Methods

contentTracing模块具有以下方法:

contentTracing.getCategories(callback)

  • callback Function
    • categories String[]

获取一组类别组。类别组可以在新代码路径到达时更改。

一旦所有子进程已经确认getCategories请求,callback就用一组类别组来调用该请求。

contentTracing.startRecording(options, callback)

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

开始在所有进程上录制。

只要收到EnableRecording请求,录制就立即在本地和异步地在子进程上立即开始。callback一旦所有子进程已经确认startRecording请求,将会调用它。

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

跟踪选项将首先被重置为默认选项(record_mode设置为record-until-fullenable_samplingenable_systrace设置为false),然后再traceOptions应用解析的选项。

contentTracing.stopRecording(resultFilePath, callback)

  • resultFilePath String
  • callback Function
    • resultFilePath String

停止在所有进程上录制。

子进程通常高速缓存跟踪数据,并且很少刷新并将跟踪数据发送回主进程。这有助于最小化跟踪的运行时间开销,因为通过IPC发送跟踪数据可能是一项昂贵的操作。所以,为了结束跟踪,我们必须异步地要求所有子进程刷新任何挂起的跟踪数据。

一旦所有的子进程已经确认了stopRecording请求,callback将会被一个包含跟踪数据的文件调用。

跟踪数据resultFilePath如果不是空的或写入临时文件将被写入。callback如果不是,实际的文件路径将被传递给它null

contentTracing.startMonitoring(options, callback)

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

开始监视所有进程。

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

一旦所有的子进程已经确认了这个startMonitoring请求,callback就会被调用。

contentTracing.stopMonitoring(callback)

  • callback Function

Stop monitoring on all processes.

一旦所有的子进程已经确认stopMonitoringcallback被调用的请求。

contentTracing.captureMonitoringSnapshot(resultFilePath, callback)

  • resultFilePath String
  • callback Function
    • resultFilePath String

获取当前监控跟踪数据。

子进程通常高速缓存跟踪数据,并且很少刷新并将跟踪数据发送回主进程。这是因为通过IPC发送跟踪数据可能是一项昂贵的操作,我们希望避免跟踪造成不必要的运行时间开销。所以,为了结束跟踪,我们必须异步地要求所有子进程刷新任何挂起的跟踪数据。

一旦所有的子进程已经确认了这个captureMonitoringSnapshot请求,callback就会用一个包含跟踪数据的文件来调用它。

contentTracing.getTraceBufferUsage(callback)

  • callback 功能
    • value
    • percentage

获取跟踪缓冲区进程的最大用量占满状态的百分比。当TraceBufferUsage值被确定时,callback被调用。

内容追踪 | contentTracing相关

Electron

Electron 是一个使用 JavaScript, HTML 和 CSS 等 Web 技术创建原生程序的框架,它负责比较难搞的部分,你只需把精力放在你的应用的核心上即可。

主页 https://electron.atom.io/
源码 https://github.com/electron/electron
发布版本 1.7.9

Electron目录

1.指南 | Guides
2.指南·开发 | Guides: Development
3.Webview 组件 |
4.加速器 | Accelerator
5.API
6.API·对象 | API·Objects
7.app
8.autoUpdater
9.浏览器总览 | BrowserView
10.浏览器窗口 | BrowserWindow
11.浏览器窗口代理 | BrowserWindowProxy)
12.ClientRequest
13.剪贴板 | clipboard
14.内容追踪 | contentTracing
15.小型文字档案 | Cookies
16.crashReporter
17.调试器 | Debugger
18.desktopCapturer
19.dialog
20.电子下载 | DownloadItem
21.环境变量 | Environment Variables
22.无框窗口 | Frameless Window
23.globalShortcut
24.IncomingMessage
25.ipcMain
26.IPC渲染器 | ipcRenderer
27.语言环境 | Locales
28.画面 | Menu
29.MenuItem
30.本地图像 | nativeImage
31.net
32.通知 | Notification
33.权限监控 | powerMonitor
34.权限存储拦截器 | powerSaveBlocker
35.处理 | process
36.协议 | protocol
37.远程 | remote
38.sandbox
39.屏幕 | screen
40.会话 | session
41.shell
42.系统表现 | systemPreferences
43.触摸板 | TouchBar
44.触摸板按钮 | TouchBarButton
45.触摸板颜色选择器 | TouchBarColorPicker
46.触摸板组 | TouchBarGroup
47.触摸板标签 | TouchBarLabel
48.触摸板弹出框 | TouchBarPopover
49.触摸板清理 | TouchBarScrubber
50.触摸板分段控制 | TouchBarSegmentedControl
51.触摸板滑块 | TouchBarSlider
52.触摸板间隔 | TouchBarSpacer
53.Tray
54.网页内容 | webContents
55.网页框架 | webFrame
56.网页要求 | WebRequest
57.窗口开启 | window.open