前置資訊
本機(MacBook Pro)上 Electron 的路徑:/usr/local/lib/node_modules/electron/dist/Electron.app/Contents/MacOS/Electron
本機 Electron 資料檔案路徑:/Users/bianchengsanmei/Library/Application Support/Electron
本地 dump_sysm 路徑:/Users/bianchengsanmei/Library/Developer/Xcode/DerivedData/Breakpad-ebqwamwdejfpicartmwratdgdbnc/Build/Products/Release/dump_syms
minidumps_stackwalk 路徑 /Users/bianchengsanmei/Public/CODE/google_breakpad/breakpad/src/processor/minidump_stackwalk
構建 google_breakpad
- 下載
google_breakpad
原始碼;git clone https://github.com/google/breakpad.git
- 編譯 google_breakpad
./configure && make
- 安裝構建的庫
make install
生成 Electron 崩潰日誌
// main.js
import { app, crashReporter } from "electron";
import * as path from "path";
crashReporter.start({
uploadToServer: false
});
app.setPath("crashDumps", process.cwd() + "/crash");
這樣當渲染程式崩潰後,我們可在安裝目錄下的 crash
資料夾下找到一份 dump 檔案,這就是崩潰日誌檔案。
需要注意,在 electron@7.1.4
中,是沒有 crashDumps 路徑的,統一存在 temp 路徑下。
解析 dump 檔案
直接開啟檢視 dump 檔案,為 16 進位制資料:
需要把該檔案轉換為可讀、可分析的檔案,使用工具為 google_breakpad 中的 minidumps_stackwalk:
$ /Users/bianchengsanmei/Public/CODE/google_breakpad/breakpad/src/processor/minidump_stackwalk ./crash/test.dump > ./crash/test.info
開啟檢視 test.info:
其中最需要注意的是 Crash reason
,是導致崩潰的原因描述。
學習有趣的知識,結識有趣的朋友,塑造有趣的靈魂!
大家好,我是〖程式設計三昧〗的作者 隱逸王,我的公眾號是『程式設計三昧』,歡迎關注,希望大家多多指教!
你來,懷揣期望,我有墨香相迎! 你歸,無論得失,唯以餘韻相贈!
知識與技能並重,內力和外功兼修,理論和實踐兩手都要抓、兩手都要硬!
本作品採用《CC 協議》,轉載必須註明作者和本文連結