콘텐츠로 이동

crashReporter

Electron crashReporter에 대응하는 API. 런타임 API는 extra parameter와 업로드 플래그 상태를 제공한다. 크래시 리포터가 첫 프로세스부터 활성화되려면 suji.jsonapp.crashReporter 설정이 필요하다 — 이 설정이 앱 시작 전에 crash_reporter.cfg를 생성한다.

{
"app": {
"name": "My App",
"version": "1.0.0",
"crashReporter": {
"submitURL": "https://crash.example/submit",
"uploadToServer": true,
"extra": { "channel": "stable" }
}
}
}

CEF 제약상 crash_reporter.cfg는 initialize 전에 존재해야 한다. macOS .app 번들은 Contents/Resources/crash_reporter.cfg, Linux/Windows와 dev raw binary는 실행 파일 옆에 생성된다.

import { crashReporter } from "@suji/api";
await crashReporter.start({
uploadToServer: false,
extra: { suite: "e2e" },
});
await crashReporter.addExtraParameter("mode", "test");
const params = await crashReporter.getParameters();
await crashReporter.removeExtraParameter("mode");
API설명
start(options)런타임 상태와 extra 값을 등록. uploadToServer:true이면 submitURL 필요
getParameters()현재 등록된 extra parameter 객체
addExtraParameter(key, value)crash key 추가/갱신. key는 ASCII [A-Za-z0-9_-], 39바이트 이하. value는 1024바이트 이하
removeExtraParameter(key)crash key 제거
getUploadToServer() / setUploadToServer(bool)업로드 플래그 조회/변경
getUploadedReports()로컬 Crashpad DB의 completed/*.dmp report 목록
getLastCrashReport()로컬 Crashpad DB의 최신 completed/pending report 또는 null
  • Crashpad DB 조회는 로컬 dump 파일을 읽는다. macOS/Linux는 앱 캐시 경로 아래 Crashpad/, Windows는 %LOCALAPPDATA%/<AppName>/User Data/Crashpad를 사용한다.
  • 실제 크래시 유발과 업로드 서버 round-trip은 자동으로 검증되지 않는다. submitURL_required, 잘못된 crash key, 초과 크기 value 같은 런타임 validation은 동작한다.
  • extra 값은 crash reporter가 활성화된 상태에서 crash key로도 전달된다.
  • crash key 선언은 시작 전 cfg의 [CrashKeys]에 있어야 dump에 안정적으로 포함된다.