返回 Skill 列表
extension
分类: 开发与工程无需 API Key

crash-instrumentation

设置带有可操作上下文的崩溃检测。在配置崩溃捕获、错误边界或面包屑策略时使用。

person作者: jakexiaohubgithub

Crash Instrumentation

Capture crashes with the context needed to debug them.

Core Principle

A crash report without context is useless. Every crash should include:

| Context | Why | Example | |---------|-----|---------| | screen | Where it happened | "CheckoutScreen" | | job_name | What user was doing | "checkout" | | job_step | Where in the flow | "payment" | | breadcrumbs | What led here | Last 20 user actions | | app_version | Release correlation | "1.2.3" | | user_segment | Who's affected | "premium", "trial" |

Breadcrumb Strategy

Breadcrumbs are the trail leading to a crash. Capture:

| Category | What to Log | Example | |----------|-------------|---------| | navigation | Screen transitions | "HomeScreen → CartScreen" | | user | Taps, inputs, gestures | "Tapped checkout button" | | network | API calls (not payloads) | "POST /api/orders started" | | state | Key state changes | "Cart updated: 3 items" | | error | Non-fatal errors | "Retry #2 for payment" |

Limit: Keep last 20-50 breadcrumbs. More is noise.

Error Boundaries

Catch errors before they crash the app:

// iOS - capture context before crash
func captureError(_ error: Error, screen: String, job: String?) {
    Observability.captureError(error, context: [
        "screen": screen,
        "job_name": job ?? "unknown",
        "session_duration": sessionDuration(),
        "memory_pressure": memoryPressure()
    ])
}
// Android - uncaught exception handler
Thread.setDefaultUncaughtExceptionHandler { thread, throwable ->
    Observability.captureError(throwable, mapOf(
        "thread" to thread.name,
        "screen" to currentScreen,
        "job_name" to currentJob
    ))
    previousHandler?.uncaughtException(thread, throwable)
}

What NOT to Attach

| Don't | Why | |-------|-----| | Full stack traces in breadcrumbs | Redundant, SDK captures this | | User input text | PII risk | | Full request/response bodies | Size limits, PII | | Entire app state | Unbounded, noise |

Crash Types to Handle

| Platform | Type | Instrumentation | |----------|------|-----------------| | iOS | EXC_BAD_ACCESS | Breadcrumbs, memory context | | iOS | SIGKILL (watchdog) | Background task tracking | | Android | ANR | Main thread breadcrumbs | | Android | OutOfMemoryError | Memory tracking | | React Native | JS exceptions | Error boundaries |

Implementation

See references/crash-reporting.md for:

  • Platform-specific crash capture setup
  • Breadcrumb implementation patterns
  • Vendor SDK configuration

See skills/symbolication-setup for readable stack traces.