A cross-platform, efficient, and easy-to-integrate crash-reporting library for modern C++ applications.
CrashCatch is a lightweight, single-header C++ crash-reporting library for generating .dmp
and .txt
crash logs โ complete with stack traces, diagnostics, optional cleanup hooks, and user dialogs.
CrashCatch provides simple and powerful crash diagnostics for C++ applications on Windows and Linux, with macOS support planned. Whether you're building GUI apps, system tools, or CLI utilities, CrashCatch helps you catch and log critical failures with minimal setup.
As of v1.2, CrashCatch supports rich crash context capture and includes optional post-crash upload integration.
SIGSEGV
, SIGABRT
, SIGFPE
, etc.).dmp
and .txt
crash report generationonCrash()
& onCrashUpload()
Hooks โ Run cleanup or upload crash artifactsfind_package
supportSetUnhandledExceptionFilter
+ MiniDump Linux โ
Yes POSIX signals (signal()
) + backtrace macOS ๐ง Planned POSIX + Mach exceptions
CrashCatch/
โโโ include/
โ โโโ CrashCatch.hpp # Single-header crash handler
โโโ examples/
โ โโโ CrashCatchExample.cpp
โโโ LICENSE # MIT License
โโโ README.md # Project documentation
โโโ CONTRIBUTING.md # Contribution guidelines
CrashCatch is 100% header-only.
To integrate:
include/CrashCatch.hpp
into your project#include "CrashCatch.hpp"
in your codeCrashCatch::enable()
or the CRASHCATCH_AUTO_INIT
macro-ldl
or -rdynamic
for deeper Linux symbole resolution if desiredโ No build steps.
โ No.lib
,.dll
, or.so
.
๐ Just one.hpp
file, ready to use.
Copy CrashCatch.hpp
into your project and include it:
#include "CrashCatch.hpp" ## QuickStart ### Zero Config (Auto-init) ```cpp #define CRASHCATCH_AUTO_INIT #include "CrashCatch.hpp" int main(){ int* ptr = nullptr; *ptr = 42; // simulated crash }
#include "CrashCatch.hpp" int main(){ CrashCatch::enable(); //Initalizes with default config int* ptr = nullptr; *ptr = 42; // simulated crash }
#include "CrashCatch.hpp" int main(){ CrashCatch::Config config: config.appVersion = "1.0.0"; config.buildConfig = "Release"; config.additionalNotes = "This is a test build."; config.onCrash = []{ std::cout << "Cleaning up before crash...\n"/ }; config.showCrashDialog = true; CrashCatch::initalize(config); int* ptr = nullptr; *ptr = 42; // simulated crash }
You can install CrashCatch with:
cmake -Bbuild -DCMAKE_INSTALL_PREFIX=install cmake --build build --target install find_package(CrashCatch REQUIRED) target_link_libraries(MyApp PRIVATE CrashCatch::CrashCatch)
When a crash occurs, CrashCatch generates the following files in the ./crash_dumps/
directory:
crash_YYYY-MM-DD_HH-MM-SS.dmp
โ Binary MiniDump (viewable in tools like WinDbg)crash_YYYY-MM-DD_HH-MM-SS.txt
โ Human-readable crash summary.txt
Includes:
Crash Report (Windows)
============
Timestamp: 2025-04-01_14-23-56
Dump File: ./crash_dumps/crash_2025-04-01_14-23-56.dmp
Exception Code: 0xC0000005
Thread ID: 12345
Stack Trace:
[0]: MyApp::SomeFunction + 0x15
[1]: MyApp::MainLoop + 0x2a
[2]: WinMain + 0x10
[3]: __tmainCRTStartup + 0x20
[4]: BaseThreadInitThunk + 0x14
[5]: RtlUserThreadStart + 0x21
Environment Info:
App Version: 1.0.0
Build Config: Release
Architecture: x64
Executable: C:\Path\To\YourApp.exe
Uptime (s): 182
Notes: Test build
Crash Report (Linux)
============
Timestamp: 2025-04-04_15-42-18
Signal: Segmentation fault (11)
Stack Trace:
[0]: ./CrashCatchTest(+0x1234)
[1]: libc.so.6(+0xdeadbeef)
[2]: start_thread
[3]: __libc_start_main
Environment Info:
App Version: 1.1.0
Build Config: Release
Platform: Linux
Executable: /home/user/CrashCatchTest
CrashCatch provides detailed crash metadata via CrashContext
:
struct CrashContext{ std::string dumpFilePath; std::string logFilePath; std::string timestamp; int singalOrCode; };You can use both in
onCrash
and onCrashUpload
CrashCatch is actively being developed with the goal of becoming a robust, cross-platform crash-handling solution.
.dmp
and .txt
supportCrashCatch::enable()
)CRASHCATCH_AUTO_INIT
)onCrash
callback hook for cleanupCross-Platform Support
macOS crash handling via POSIX signals and core dumps
Remote Uploads
Optional HTTPS endpoint for uploading crash reports (TLS encrypted)
JSON Crash Logs
Structured .json
report format alongside .txt
Symbol Upload Support
Integration with symbol servers for full symbol resolution
Crash Viewer App
GUI tool to browse .dmp
/ .txt
reports locally
Package Manager Support
Distribute via vcpkg, Conan, Homebrew, etc.
CI/CD Integration
GitHub Actions for test builds, release pipelines
Auto-Cleanup of Old Reports
Limit or rotate crash logs by count, size, or age
Optional .zip
Compression
Combine .dmp
and .txt
into a zip archive for easier sharing
Auto-Open Crash Log
Developer mode option to open .txt
in Notepad after crash
Full Documentation Site (In progress) GitHub Pages or static /docs
with setup, usage, API reference
We warmly welcome contributions! Check CONTRIBUTING.md
for more information.
CrashCatch is licensed under the MIT License. You're free to use, modify, and distribute it within your projects.
RetroSearch is an open source project built by @garambo | Open a GitHub Issue
Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo
HTML:
3.2
| Encoding:
UTF-8
| Version:
0.7.4