Skip to main content
Electron SDK 将主进程和渲染进程的数据关联到同一条会话,帮助你同时分析桌面应用运行状态和页面体验。

采集概览

渲染进程的页面数据由 @flashcatcloud/browser-rum 采集,支持范围与 Web SDK 数据收集一致。

区分主进程和渲染进程

两类事件使用不同的来源字段: 要筛选一个 Electron 应用产生的全部事件,请使用:
只使用 source:electron 会遗漏渲染进程数据。
如果渲染进程事件没有 container.source: electron,说明事件没有经过主进程桥接。请参阅为什么只有主进程数据
在控制台中,错误详情和会话事件详情的属性面板会在「Other」属性组中额外展示一个虚拟的 process 属性,取值为「主进程」或「渲染进程」,用于直接区分事件来自哪个进程;会话事件列表中,主进程事件还会带有「主进程」标记。

会话

主进程负责 Electron 应用的会话生命周期: 纯主进程后台任务不会延长会话,也不会自动创建新会话。

用户身份

主进程 SDK 会为应用生成稳定的匿名设备标识。调用 setUser() 后,主进程事件和通过桥接上报的渲染进程事件都会带上登录用户信息。 会话回放由渲染进程直接上传。开启回放时,请在渲染进程同步调用 flashcatRum.setUser()flashcatRum.clearUser() API 用法见关联登录用户

主进程 view

主进程没有页面路由。SDK 为每个主进程实例维护一个固定 view,并将主进程的错误和网络请求关联到该 view。 该 view 的主要标识为: 渲染进程仍按 Web SDK 规则创建自己的页面 view。主进程 view 不包含渲染进程页面的 Web Vitals 和用户操作计数。

错误与崩溃

JavaScript 错误

主进程和渲染进程的错误栈都会归一化为稳定路径,可以使用 sourcemap 还原。操作方法见 Electron 错误还原

原生崩溃

Electron 发生原生崩溃时,会在本地生成 minidump。进程已经终止,无法立即上报,因此 SDK 会在应用下一次启动时读取并上报崩溃事件。 崩溃事件包含:
  • 崩溃类型和进程信息
  • 崩溃线程及其他线程的调用栈
  • 加载的原生模块
  • 操作系统和 CPU 架构
未上传符号文件时,原生调用栈会显示模块名和地址。上传匹配的 Breakpad 符号后,Flashduty 可以还原函数名、文件名和行号。

进程终止

SDK 还会监听渲染进程和 Electron 子进程终止,包括被系统结束、启动失败或沙箱终止等不会产生 minidump 的情况。 这类事件会记录进程类型、退出原因、退出码和页面 URL,但没有调用栈。

主进程网络请求

SDK 自动采集主进程发起的 httphttpsfetchnet.fetch 请求,并将它们记录为 RUM resource。
Electron 自带的 net 模块只在 Electron 37 及以上被追踪。在 Electron 30 到 36 上,net.request / net.fetch 发出的请求不会产生 resource 事件;httphttps 和全局 fetch 不受影响,各支持版本均正常采集。
主要字段包括:
  • 请求 URL 和方法
  • HTTP 状态码
  • 请求耗时
  • Trace ID 和 Span ID
主进程 resource 的 resource.typenative,可以与渲染进程的 fetchxhr 区分。 当前不提供完整 APM。只有 HTTP span 会转换为 RUM resource;IPC 和子进程命令 span 不会上报。

上报与重试

普通 RUM 事件和会话回放使用不同的上报方式: 因此,主进程的 siteproxybatchSizeuploadFrequency 不会改变会话回放的上传行为。私有化回放地址需要在渲染进程单独配置。

相关页面

SDK 接入指南

完成主进程与渲染进程接入。

高级配置

配置上报地址、用户身份和公开 API。

错误还原

还原 JavaScript 和原生崩溃调用栈。

问题排查

排查数据缺失、桥接和回放问题。