electron崩溃日志捕获

512 阅读1分钟

Electron的 crashReporter 模块用于帮助开发者收集并报告应用程序崩溃的信息。这对于识别和解决在发 布后的应用中可能出现的问题非常有用。Electron的 crashReporter 是基于 Chromium的崩溃报告系统构 建的,允许开发者收集崩溃日志,并将它们发送到自己的服务器,或者发送到Electron的崩溃报告服务(如 果开发者选择这样做的话,尽管这通常不是首选,因为隐私和安全性的考虑)。 另外还需要记录其他崩溃错误信息,写入日志文件中。

Electron的 crashReporter

mac上崩溃日志的文件路径:/Users/caiyunsun/Library/Application Support/ee/Crashpad/completed/5856f335-ec64-47b9-bdda-ff004bd8f2cd.dmp

需要处理的事件有render-process-gone 和 child-process-gone 。其他几个已废弃。

image.png 另外还需要监控进程: uncaughtException 和 unhandledRejection。

核心代码如下



const { app: electronApp, crashReporter, dialog } = require("electron");

crashReporterLog() {

    // 获取奔溃堆栈文件存放路径

    let crashDumpsDir = "";

    const self = this;

    try {

      // electron 高版本

      crashDumpsDir = electronApp.getPath("crashDumps");

      console.log("————————crashDumpsDir:", crashDumpsDir);

    } catch (e) {

      console.error("获取奔溃文件路径失败", e);

    }

  


    // 开启crash捕获 官方建议写在app.on('ready')前

    crashReporter.start({

      productName: "ee",

      companyName: "ee",

      submitURL: "", // 上传到服务器的地址

      uploadToServer: false, // 不上传服务器

      ignoreSystemCrashHandler: false, // 不忽略系统自带的奔溃处理,为 true 时表示忽略,奔溃时不会生成奔溃堆栈文件

      extra: {

        timestamp: dayjs().format("YYYY-MM-DD HH:mm:ss"),

      },

    });

    // 监听崩溃事件

  


    electronApp.on(

      "render-process-gone",

      async (event, webContents, details) => {

        console.warn(

          "————————app:render-process-gone",

          event,

          webContents,

          details

        ); 

    );

  


    electronApp.on("child-process-gone", (event, details) => {

      console.warn("————————app:child-process-gone", event, details);

   

    });

  


    process.on("uncaughtException", (error) => {

      console.error("主进程 - 未捕获的异常:", error);

 

  


    });

  


    process.on("unhandledRejection", (reason, promise) => {

      console.error("主进程 - 未处理的Promise拒绝:", reason);

   

    });

  }

参考

# crashReporter

[# Electron app事件,方法,属性(生命周期)]

# Electron 收集崩溃日志