No matter how well an application is engineered, at some point, it will crash due to an unexpected condition. To learn from these crashes and to try and prevent them in the future, it helps to add code to applications to gather crash reports and send them to a central location. Here, they can be analyzed and grouped to identify application improvements. How to do this differs depending on the type of application.
The following sections discuss how this process for mobile and desktop applications works. Regarding web applications, gathering crash reports can be done using the same tool as for instrumentation; we will discuss this in the Instrumenting web applications section later on.