Releases: keithpotz/CrashCatch
CrashCatch v1.2.0
π CrashCatch v1.2.0
CrashCatch v1.2.0 is our biggest update yet β bringing full Linux support, powerful callback hooks, and the groundwork for cross-platform crash diagnostics β all within a single header file.
β¨ What's New
π§ Linux Support Finalized
- β
POSIX signal handling now supports:
SIGSEGVβ Segmentation faultSIGABRTβ Aborted processSIGFPEβ Floating-point exceptionSIGILL,SIGBUSβ Illegal instruction, bus errors
- β
Stack traces via
backtrace() - β
Demangled function names using
__cxa_demangle - β
Executable path detection via
/proc/self/exe
π§ New CrashContext Struct
- Contains detailed crash metadata passed into callback hooks:
.dmpfile path (Windows).txtlog path- timestamp
- signal or exception code
πͺ onCrash and onCrashUpload Hooks
- New configurable callbacks:
config.onCrash = [](const CrashContext& ctx) { // Cleanup or logging before app terminates }; config.onCrashUpload = [](const CrashContext& ctx) { // Send crash file to your server/service };```
Enabled cleanup, telemetry, logging, or remote upload logic right from the app!
π Skips Debug Exceptions
Windows debug control exceptions (DBG_PRINTEXCEPTION_C, DBG_CONTROL_C) are now ignored to avoid false positives.
π§ͺ Examples Added
- π§΅
Example_ThreadCrash.cpp - β
Example_divideByZero.cpp - πΌ
Example_FullConfig.cppβ now includesonCrash - βοΈ
Example_UploadCrash.cppβ demonstrates usingonCrashUploadto simulate a remote crash report
π Internal Improvements
- Reorganized internal logic with clear inline documentation
- Hardened Linux support for production use
- Improved stack trace readability
- Unified timestamp generation and path formatting
π Documentation
- Updated
README.mdwith full platform details - New
linux.mdpage under GitHub Pages - Refined screenshots, quick start, and crash log examples
π¦ CMake & CI
- Enhanced CMake integration remains header-only
- GitHub Actions CI runs automatically on push
π§ Roadmap (Next Up)
- macOS support via Mach exceptions
- Remote crash uploads (via webhook or HTTPS endpoint)
- .json crash logs
- Crash viewer UI tool
- Auto-rotate / cleanup of old log
π§ Thanks & Community
Thanks to everyone who tested Linux support, contributed feedback, or opened issues. Letβs keep building it better β and safer.
If you like it, consider β starring the project!
CrashCatch v1.1.0 β Now with Linux Support
[1.1.0] β 2025-04-04
Added
- π§ Linux support with POSIX signal handling
- Signal-based crash capture for SIGSEGV, SIGABRT, and SIGFPE
- Executable path resolution for Linux using
/proc/self/exe - Stack traces using
backtrace()andbacktrace_symbols()
Changed
- Refactored header-only implementation to be cross-platform
- Improved crash log structure and formatting on Linux
- Now detects and logs platform, architecture, and executable location
β Bug Fix: Linux Compatibility Crash (#1)
Resolved a Linux-specific compilation error reported in #1, which occurred due to the use of Windows.h-specific types and headers on non-Windows systems.
π§ What changed:
- CrashCatch now conditionally includes only platform-appropriate headers (e.g.,
Windows.hfor Windows,signal.handexecinfo.hfor Linux). - Windows-specific functionality (e.g.,
MiniDumpWriteDump,MessageBoxA) is fully gated behind#ifdefblocks. - Linux support now builds cleanly on GCC/Clang without needing to modify the source.
π‘ Impact:
CrashCatch v1.1.0 is now cross-platform out of the box and builds cleanly on Linux with no manual patching required.
Fixed
- Crash log generation on Linux wasn't triggered for certain signals
- Windows-only includes and defines now guarded by platform macros
Zip File
The zip file has the CMakeLists.txt and CrashCatch.hpp files included
CrashCatch v1.0.0 - Initial Public Release
π CrashCatch v1.0.0 β Initial Public Release
CrashCatch is a single-header crash reporting library for modern C++ applications. This first release supports Windows and generates .dmp and .txt logs for unhandled exceptions.
π― Features
- π§ Stack trace + exception context
- πΎ Minidump file (
.dmp) generation - π Human-readable log (
.txt) with:- Stack trace
- App version / build info
- Thread ID / exception code
- Uptime
- β
Zero-config mode (
CRASHCATCH_AUTO_INIT) - βοΈ Configurable versioning, notes, dialog, and crash callback
- πͺ One-liner setup via
CrashCatch::enable() - πͺ Optional message box on crash (GUI-friendly)
π¦ Installation
π’ CrashCatch is a single-header library.
To use it, simply copy 'CrashCatch.hpp' file into your project:
#include "CrashCatch.hpp"Or you can auto-init with:
#define CRASHCATCH_AUTO_INIT
#include "CrashCatch.hpp"π Includes
CrashCatch.hppβ single header drop-in- 5 real-world examples in
/examples/ - Screenshots and logs in
/screenshots/
π£ Future roadmap includes:
- Linux/macOS support
- Remote upload
- JSON crash logs
- Viewer GUI
Thank you for checking out CrashCatch!
Created and maintained by Keith Pottratz