electron-minidump

  1. 新建一个npm项目

  2. 安装electron-minidump模块

  3. 编写如下脚本,注意这里由于我们使用Nodejschild_process模块的exec方法来执行命令,所以我们要全局安装 electron-minidump或者在package.json中添加执行如下脚本的scripts才能正确找到electron-minidump模块然后分析

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
const path = require('path');
const childProcess = require('child_process');
const fse = require('fs-extra');

fse.readdir('./reports/', (err, files) => {
if (err) {
console.log(err);
return;
}
files.forEach(file => {
if (file.endsWith('.dmp')) {
childProcess.exec(`electron-minidump -f ${path.resolve('./reports/' + file)}`, (err, stdout, stderr) => {
if (err) {
console.log(err);
return;
}
fse.writeFile('./results/' + file.replace('.dmp', '.txt'), stdout, err => {
if (err) {
console.log(err);
return;
}
});
})
}
});
});
  1. 这里分析结束后,就可以在txt文件中找到分析结果了。此种方式特别适合部署线上自动化dump收集分析服务,方便我们监控并快速定位线上崩溃问题。

Visual Studio

  1. 安装 Visual Studio 社区版最新版本

  2. 安装时工作负荷勾选<使用C++的桌面开发>,勾选所有的Windows SDK

  1. 启动Visual Studio,选择<继续但无需代码>

  2. 菜单栏 -> 调试 -> 选项 -> 调试 -> 符号,添加如下符号源

    a. 在调试器中设置 Symbol 服务器

    b. 在 Electron Github Releases 中选择对应版本的Assets中的pdb下载到本地

    c. 设置缓存符号位置,减少下次分析的符号加载时间

  1. 菜单栏 -> 文件 -> 打开 -> 文件【快捷键:Ctrl + O】

  2. 选择dump文件 -> 打开

  3. 选择使用 仅限本机 进行调试

  1. 查看异常分析结果时,双击堆栈行选择源码文件
  1. 双击堆栈行,选择源码文件,路径与<原位置>所示位置一致

WinDbg

  1. 安装 WinDbg 最新版本

  2. 下载对应版本 Windows SDK

  3. 设置源码文件和符号路径

  1. 打开WinDbg -> 菜单栏 -> 文件 -> 选择dump文件
  1. 点击或输入 !analyze -v 命令
  1. 查看分析结果