|A crash reporting system for Windows applications|
A typical crash description file is presented below.
<?xml version="1.0" encoding="UTF-8" ?> <CrashRpt version="1207"> <CrashGUID>374db652-d268-4b0b-94dc-c014150c8cfe</CrashGUID> <AppName>CrashRpt Tests</AppName> <AppVersion>1.2.7</AppVersion> <ImageName>D:\Projects\CrashRpt\src\bin\WTLDemo.exe</ImageName> <OperatingSystem>Windows 7 Ultimate Build 7100</OperatingSystem> <OSIs64Bit>1</OSIs64Bit> <GeoLocation>en-us</GeoLocation> <SystemTimeUTC>2010-05-15T08:21:49Z</SystemTimeUTC> <ExceptionType>11</ExceptionType> <GUIResourceCount>51</GUIResourceCount> <OpenHandleCount>71</OpenHandleCount> <MemoryUsageKbytes>8144</MemoryUsageKbytes> <CustomProps> <Prop name="VideoCard" value="nVidia GeForce 9800 GTX+"/> </CustomProps> <FileList> <FileItem name="crashdump.dmp" description="Crash Dump" /> <FileItem name="crashrpt.xml" description="Crash Log" /> <FileItem name="dummy.ini" description="Dummy INI File" /> <FileItem name="dummy.log" description="Dummy Log File" /> <FileItem name="screenshot0.png" description="Desktop Screenshot" /> </FileList> </CrashRpt>
The root element is
CrashRpt. It has attribute named
version representing the version of CrashRpt library that generated the error report. For example, the value of '1103' means version 1.1.3, the value of '1201' means version 1.2.1.
CrashGUID is a unique ID of the error report. It can be used, for example, as a primary key if you plan to store crash reports in a database.
AppVersion is the version of your application that was passed to crInstall() as CR_INSTALL_INFO::pszAppVersion structure member. You are typically interested in analysing error reports from the latest version of your software and ignore reports from older versions.
ImageName is path to the executable image of your software.
OperatingSystem is the friendly name of end user's operating system, including name, build number and service pack. It is useful information because many errors are OS-specific.
OSIs64Bit signals if user's operating system is 64-bit (equals to 1) or 32-bit (equals to 0).
GeoLocation represents user's geographic location in an RFC 1766 compliant form.
SystemTimeUTC is the time in UTC format when crash had occurred. This value can be used to order crash reports by creation time.
UserEmail is the E-mail address of error report sender. If specified, it can be used to contact user and request additional info about error.
ProblemDescription is the user-provided problem description.
FileList contains the list of files that are contained in the error report.
ExceptionType is an integer that means the type of error (see CR_EXCEPTION_INFO structure documentation):
The exception type can be used to divide error reports into some categories.
There are additional elements that appear sometimes, depending on
ExceptionCode is the SEH exception code. It presents when
ExceptionType is 0.
FPESubcode is the floating point exception subcode. It presents when
ExceptionType is 8. For information on floating point exception subcodes, see documentation of signal() function in MSDN and <float.h> header file
InvParamLine are present when
ExceptionType is 6. These elements are typically empty. They may be non-empty if debug version of CRT is used in your application.
GUIResourceCount is the number of GUI resources used by your program at the moment of crash.
OpenHandleCount is the number of handles (for example, file handles) in use by your program by the moment of crash.
MemoryUsageKbytes is the amount of memory (in kilobytes) in use by your problem at the moment of crash.
Further reading: Using Crash Minidump.