diff --git a/docs/api/crash-reporter.md b/docs/api/crash-reporter.md index 737918571c51..3398ba54e006 100644 --- a/docs/api/crash-reporter.md +++ b/docs/api/crash-reporter.md @@ -51,16 +51,34 @@ You are required to call this method before using any other `crashReporter` APIs and in each process (main/renderer) from which you want to collect crash reports. You can pass different options to `crashReporter.start` when calling from different processes. -**Note:** On Windows and Linux, Electron uses `breakpad` for crash collection and reporting. -Crashes can be collected from the main and renderer process, but not from the child processes -created via the `child_process` module. +**Note** Child processes created via the `child_process` module will not have access to the electron modules. +Therefore, to collect crash reports from them, use `process.crashReporter.start` instead. Pass the same options as above +along with an additional one called `crashesDirectory` that should point to a directory to store the crash +reports temporarily. + +**Note:** To collect crash reports from child process in Windows, you need to add this extra code as well. +This will start the process that will monitor and send the crash reports. Replace `submitURL`, `productName` and `tmpPath` +with appropriate values. +``` + const args = [ + '--reporter-url=' + submitURL, + '--application-name=' + productName, + '--crashes-directory=' + tmpPath + ] + const env = { + ELECTRON_INTERNAL_CRASH_SERVICE: 1 + } + spawn(process.execPath, args, { + env: env, + detached: true + }) +``` **Note:** On macOS, Electron uses a new `crashpad` client for crash collection and reporting. -Crashes can be collected from the main, renderer and any of the child processes created via the `child_process` module. If you want to enable crash reporting, initializing `crashpad` from the main process using `crashReporter.start` is required regardless of which process you want to collect crashes from. Once initialized this way, the crashpad handler collects -crashes from all processes. You still have to call `crashReporter.start` from the renderer process, otherwise crashes from -renderer processes will get reported without `companyName`, `productName` or any of the `extra` information. +crashes from all processes. You still have to call `crashReporter.start` from the renderer or child process, otherwise crashes from +them will get reported without `companyName`, `productName` or any of the `extra` information. ### `crashReporter.getLastCrashReport()`