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。 主要字段包括:
  • 请求 URL 和方法
  • HTTP 状态码
  • 请求耗时
  • Trace ID 和 Span ID
主进程 resource 的 resource.typenative,可以与渲染进程的 fetchxhr 区分。 当前不提供完整 APM。只有 HTTP span 会转换为 RUM resource;IPC 和子进程命令 span 不会上报。

上报与重试

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

相关页面

SDK 接入指南

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

高级配置

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

错误还原

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

问题排查

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