Logo crashrpt
A crash reporting system for Windows applications

Getting Started

CrashRpt is a light-weight open-source error reporting library for C++ applications created in Microsoft Visual Studio IDE and running in Windows.

Why CrashRpt?

Errors in the code are inevitable, no matter how well you test your application. When a critical error (also called a crash) occurs on the end user's machine, it can be difficult to reproduce it and take action to address it. That is, you get an unstable application and dissatisfied users.

Crash reporting is a technique allowing to receive user feedback and improve quality and stability of your software. To enable crash reporting in your app, you integrate it with CrashRpt -- a light-weight crash reporting library.

CrashRpt's purpose is to automatically collect crash data and deliver them to the software vendor over the Internet. Crash reports include data such as stack traces, type of crash, and version of software. This information helps software developers to diagnose and fix the underlying problem causing the crash.

CrashRpt Mission

The mission of CrashRpt is to provide a set of tools for:


This library is distributed under the New BSD license. Other software included in CrashRpt distribution is provided under other licenses, as listed in the table below.

Name License
WTL Microsoft Permissive License
Microsoft Debug Help Library Microsoft Software License Terms for Microsoft Debugging Tools for Windows
TinyXml licence of zlib/libpng
ZLib zlib license
minizip zlib license
libpng libpng license
JPEG library Independent JPEG Group license
libtheora BSD-style license
libogg BSD-style license

Main Features

Below, the main features of CrashRpt library are briefly described.

Intercepts Critical Errors in Your Application.

CrashRpt handles exceptions (critical errors causing application crash) in the main thread and in all worker threads of your user-mode program: SEH exceptions, C run-time (CRT) errors and signals. Among error types CrashRpt can handle, there are: NULL pointer assignment, access violation, infinite recursion, stack overflow, memory depletion and so on. For advanced information on available exception handling techniques used by CrashRpt, you may refer to About Exceptions and Exception Handling page.

Automatically Collects Information about a Crash.

If you have ever tried to determine the reason why your program crashes on user's machine, you might know how difficult it may be, given user's directions only: "I opened something, then I clicked something and then it stopped working". Most of users do not contact you to tell about the problem and just give up using your program after several crashes.

Users who decide to report the problem might not have technical knowledge, so it is difficult to determine the reason of the problem based on their incomplete instructions. This makes debugging remote crashes almost impossible, except in the simplest situations.

CrashRpt does all technical information collection work automatically. CrashRpt uses Microsoft Debug Help library for minidump creation and postprocessing, supporting all variety of processor architectures. CrashRpt generates error reports including crash minidump, extensible crash description XML, application-defined files, desktop screenshots and screen video capture. For additional information on error reports, please refer to About an Error Report page.

When information has been collected, CrashRpt sends error report over the Internet to software vendor.

Friendly User Interface.

CrashRpt provides UI allowing user to review the crash report and it can display its UI using different languages, which makes it even more suitable for multi-lingual applications. CrashRpt user interface can be customized to fit software vendor's needs. For examples of CrashRpt user interface, please refer to More Screenshots page.

For software vendors who care about user's privacy, CrashRpt supports privacy policy definition.

For services (also called NT services, long-living noninteractive programs), CrashRpt provides the silent (non-GUI) mode, in which crash reports are generated and sent without any user interaction.

Provides Several Methods of Error Report Delivery.

After user has provided his consent, CrashRpt sends the report in background over the Internet. CrashRpt can send error reports using HTTP/HTTPS or as an E-mail message.

HTTP/HTTPS delivery method is suitable for users having a web-server. Secure HTTPS connection allows to send error report data through an SSL-protected channel.

Sending crash report as an E-mail message is suitable for software vendors not having servers for storing error reports. In order to send error reports over E-mail, a end user's machine should have a mail program installed, for example Mozilla Thunderbird or Microsoft Outlook.

For server software, CrashRpt provides a built-in SMTP client feature allowing to send crash reports through a pre-defined SMTP server.

For additional information on error report delivery methods, please refer to Sending Error Reports page.

Makes it Easier to Postprocess Error Reports.

Assume a software vendor receives thousands of error reports from users of his software. He would have to spend a lot of time to open each report, analyze its contents and write some summary about the report. There may be many crash reports related to the same problem, so opening them doesn't tell anything new.

That's why it is important to use a special tool helping to automate processing of arriving error reports. CrashRpt provides such a tool.

For additional information on automating crash report processing, please refer to Automating Crash Report Processing page.

Designed for Windows.

Unlike some cross-platform libraries, CrashRpt supports only one OS (Windows), only one programming language (C++) and only one compiler (Visual C++). CrashRpt supports Visual C++ 2005, 2008, 2010, 2012 and Visual C++ Express. It can be compiled for 32-bit and 64-bit platform. For more information, please refer to Compiling CrashRpt page.


CrashRpt library is light-weight, which means you should distribute only about 1.9 Mb of additional files with your software (dbghelp.dll, CrashRpt.dll, CrashSender.exe).

Further reading: Architecture Overview.

Generated on Wed Apr 29 10:17:31 2015 for CrashRpt by doxygen 1.5.9