kstenerud / KSCrash
git clone https://github.com/kstenerud/KSCrash.git
2.6.0 · 2mo ago
🔥 on GitHub Trending today
The Ultimate iOS Crash Reporter
+0
stars, 24h · #644
—
stars, 7 days
+11
stars, 30 days · #9,997
4.5k
★ total
741
forks · 46 open issues
Star history starts 2026-10-20; the chart appears after the second daily snapshot.
LanguageObjective-C
LicenseMIT
Created2012-06-17 (14y ago)
Last push1d ago
Watchers132
OwnerUser
Seen on GitHub Trending
- 2026-10-20 — #10 daily in objective-c
- 2026-10-20 — #15 monthly in objective-c · +11 ★
Links
README excerpt
> [!NOTE] > **Branch layout (August 2026)** > > - `master`: latest stable release, currently `2.6.0` > - `develop`: next-release work, **target this for new PRs** ## KSCrash 2.6 The best open-source crash reporting framework for Apple platforms. Supports iOS, macOS, tvOS, watchOS, and visionOS. KSCrash catches Mach exceptions, signals, C++/ObjC exceptions, main thread hangs, and OS-level terminations (OOM, thermal, CPU, reboot). It generates full Apple-format crash reports with every field filled in. If you are upgrading from 2.5.x, see the migration guide. For upgrades from 1.x, see the 1.x to 2.0 migration guide. ## Quick Start ### Install **SPM:** Add `https://github.com/kstenerud/KSCrash.git` in Xcode (File > Add Packages), or in `Package.swift`: [code] **CocoaPods:** [code] ### Setup [code] That's it. KSCrash will catch crashes and store reports on disk. To send reports to a server, use an installation. See `KSCrashInstallation.h` for details. ## Features See the Architecture and Code Tour wiki pages for how these work under the hood. ### Hang Detection The Watchdog monitor detects main thread hangs (250ms+) and captures full backtraces. Enable with `.watchdog` in your monitor config. See `KSCrash+Hang.h` for real-time hang observation. ### Termination Detection Detects OS-level terminations (OOM, thermal, CPU, reboot) by comparing previous-run state at launch. Query the result with `KSCrash.shared.previousTerminationReason`. ### CPU Monitoring Tracks CPU usage with sliding-window averages mirroring Apple's enforcement thresholds. Optionally generates non-fatal reports on warning/critical transitions via `enableCPUExceptionReporting`. ### Custom User Data Store per-key data that persists across crashes via `KSCrash+UserInfo.h`. Uses an mmap'd key-value store with zero crash-time overhead. ### Additional Features - **Profiler**: Sampling profiler for thread backtraces (`KSCrashProfiler` module) - **MetricKit**: Apple diagnostic payload integration (`KSCrashMonitors` module) - **Report**: Strongly-typed Swift model for crash reports (`KSCrashReportModel` module) - **Zombie Detection**: Catches messages to deallocated objects - **Memory Tracking**: Real-time memory pressure monitoring via `AppMemoryTracker` - **Crash Doctor**: Automatic crash cause diagnosis - **Custom Crashes**: Report exceptions from scripting languages via `reportUserException` - **Namespacing**: Embed KSCrash in your own library without symbol clashes For configuration options, see `KSCrashConfiguration.h`. For the full API, see `KSCrash.h`. ## Deprecations in 2.6 | Deprecated | Replacement | | ----------------------------------------------- | ---------------------------------------------------- | | `userInfo` property | Per-key API in `KSCrash+UserInfo.h` | | `deadlockWatchdogInterval` | `KSCrashMonitorTypeWatchdog` | | `enableSigTermMonitoring` | Removed (always caught) | | `KSCrashMonitorTypeMainThreadDeadlock` | `KSCrashMonitorTypeWatchdog` | | `KSCrashMonitorType