Electron 集成 Sentry
sentry分为支持本地部署。目前只涉及在线版本。
Sentry
- 创建organization
- 选择平台类型:electron,创建project
- 拿到对应的dsn地址及minidump提交的地址
yarn add @sentry/electron
根据进程不同选择不同的Sentry
import * as Sentry from "@sentry/electron/dist/main"; // 主进程
import * as Sentry from "@sentry/electron/dist/renderer"; //渲染进程
Sentry.init({ dsn: "https://92f427b4b5f6474a958e88d985b3f57c@o1011820.ingest.sentry.io/5976771" });
crashReporter.start({
productName, //产品名称
companyName, //公司名称
submitURL, // sentrt的minidump提交地址
extra:{ //额外信息,如版本号等
"release":pjson.version
}
});
minidump 及 符号表
crashReporter 为 Electron 提供的收集机制,它可以收集应用程序无法捕获的崩溃错误,收集后,可以把信息保存到本地或者上传到指定服务器。
上传的文件是二进制的minidump类型文件,一个minidump只包括了最必要的信息,用于恢复故障进程的所有线程的调用堆栈,以及查看故障时刻局部变量的值。
由于sentrt解析出的minidump内容多为内容地址,不容易根据内容排查问题。
调试符号允许您有更好的调试会话。他们拥有关于可执行文件和动态库中包含的函数的信息,并为您提供获取干净的调用堆栈的信息。为此,Electron官方提供了相关版本的符号表
上传符号表到Sentry
- 在sentry.io中拿到 Auth Tokens
- 在Electron 工程的根目录创建.sentryclirc文件
[defaults] url = https://sentry.io/ org = your org project = your project [auth] token = your token
-
安装@sentry/wizard,
npm install -g @sentry/wizard sentry-wizard --integration electron //会在根目录创建一个sentry-symbols.js文件
-
下载符号表并上传至sentry
npm install --save-dev @sentry/cli electron-download node sentry-symbols.js
这里可能会由于网络问题,导致下载失败。
可以自行在sentry-symbols.js中查看需要下载的版本,自行到官方下载地址进行下载如下
找到自己对应的electron版本资源页,目前使用的是electron10.3.0,然后选择需要下载的符合表版本:
- electron-v10.3.0-win32-ia32-symbols.zip
- electron-v10.3.0-win32-x64-symbols.zip
// ...省略
zipPath = await downloadSymbols({
version,
platform: 'win32',
arch: 'ia32',
symbols: true,
});
await sentryCli.execute(['upload-dif', '-t', 'breakpad', zipPath], true);
zipPath = await downloadSymbols({
version,
platform: 'win32',
arch: 'x64',
symbols: true,
});
await sentryCli.execute(['upload-dif', '-t', 'breakpad', zipPath], true);
//...省略
然后下载到本地后自行进行上传,命令行可根据sentryCli.execute执行的内容自行拼接组织
sentry-cli upload-dif -t breakpad -o 组织名 -p 项目名 路径