Improve Product Quality with Crash Reporting
The IntelliCAD Crash Reporting Framework allows members to collect data whenever a crash occurs in their application. The crash reporter sends a data packet (crash mini dump, details and log files) each time a crash occurs. This helps members identify problems in the field that previously went undiscovered. Crash dumps are sorted into buckets, stored in a database and presented confidentially to ITC members in a web interface.
Using the IntelliCAD Crash Reporting Framework is optional, but crash reporting is the single most important feature for improving application quality over time, and the ITC highly recommends that members enable crash reporting.
Sorted Buckets Prioritize Your Workload
Without a crash reporting system developers have no idea how well their applications are running in the field. When you first implement crash reporting in your application you'll be shocked at the number of crash reports you receive. The IntelliCAD Crash Reporting Framework automatically sorts crashes by member, unique version, and crash location and reports the number of times a crash has occurred. This critical quantitative data helps members prioritize their workload and their software update schedules.
How Does It Work?
When a crash occurs, IntelliCAD captures as much data as possible before IntelliCAD is terminated. An attempt is made to capture a mini-dump (with a call stack), a command line log, system configuration and IntelliCAD internal system variable settings and save this information into a details log. This entire packet is compressed and sent by email to the ITC’s Crash Depot server.
Once the data packet is received by our server an automated process decompresses the packet and then uses the ITC’s and the ITC member's symbol stores to unwind the mini-dump and develop a text version of the call stack that occurred at the point of crash. Many times this provides members the exact line number where the crash occurred in their source code. The developer can then review end-user comments, logs, details file and call stack to determine a fix for the crash. In addition, each crash mini-dump is post-processed to group duplicate dumps into buckets. This helps determine if a crash is a “one-off” problem, or if a few, dozens, or hundreds of similar crashes have occurred. This critical quantitative information is used to prioritize work.
Crash Depot Provides Quick Access to Crash Data
Once the data is decompressed and the mini-dump is unwound (a text file is created containing the call stack) and bucketized, all the data is added to a database with a web browser front end. We call this the ITC Crash Depot. Members use the ITC Crash Depot web interface to view and manage their crash reports. Crash data from member builds are stored separately so that only the member and ITC developers can confidentially see their crash data. The Crash Depot interface allows searches for similar crashes across products, search by reporter, and sorting by version, bucket size, module, etc.
Quickly Resolve Issues
The key to resolving a crash is a clean call stack that identifies the file and line number where the crash occurred. If you only have a crash dump, it is time consuming to set up the debugger to unwind the dump to see the actual call stack for different released versions. However, the IntelliCAD Crash Reporting Framework automatically unwinds the dumps to create a text file showing the call stack containing the source file and line number where the crash occurred. Members can simply view the call stack from the Depot interface or download the full dump for extensive debugging.
Easy Setup, Powerful Results
ITC members simply set a build id GUID, vendor name and product name in a configuration file and provide the ITC a link to their symbol server containing the PDB files for their released products. The dump collection and reporting are all handled on the ITC servers and available to member developers on the ITC member portal. Members can also sign up to receive email notification when crashes occur.
No matter how much internal testing is done there are always new issues found after the product ships. Our previous crash handling system generated a lot of data but it was unmanageable. The IntelliCAD Crash Reporting framework organizes the data so we can easily understand priorities and with the automatic stack unwinding feature we can typically resolve issues quickly.