Crash Report

Using Automatic Crash Report

By default, EO products automatically send crash report to Essential Objects' server. The following information are included in the crash report:

  • Crash context information such as exception code, exception address, threads and call stack information. This information is used by EO to analyze/debug the crash;
  • An "Application ID" value that can be used to identify all crashes reported by your application so that EO can better correlate all automatically submitted crash reports in our database with crash incidents from your application. By default, this ID is the name of your application's exe file. You can also set EO.Base.Runtime.ApplicationID to any value that you prefer thus override the default value;
  • The public IP address of the computer (or the public gateway) where the crash occurred. The crash report is sent over standard HTTP protocol. The public IP address can also help EO to filter crash reports specifically related to your application;

If you do not wish your application to automatically submit crash report, you can set EO.Base.Runtime.EnableCrashReport to false.

If you are asked by EO to provide crash report, please follow these general steps:

  1. Update to the latest build whenever possible. It's important to update to the latest build since the newer your build is, the easier it is for us to match the crash report to our current codebase in our debug environment;
  2. Make sure EO.Base.Runtime.EnableCrashReport is NOT set to false;
  3. Make sure your network/firewall does not block HTTP request to api.essentialobjects.com;
  4. Set EO.Base.Runtime.ApplicationID to an unique value and notify EO of this value;
  5. Run your application to reproduce the problem, then contact EO to verify if crash report has been received;

Manually Submitting Crash Data

If for any reason automatic crash report is not desired but you still wish to collect and send the crash data to Essential Objects, you can do this manually by handling EO.Base.Runtime.CrashDataAvailable event. Inside the event handler you can handle the crash data yourself. For example, you can save it to a file and then email this file to Essential Objects. The following code demonstrates how to save crash data to a file:

//Disable the automatic report
EO.Base.Runtime.EnableCrashReport = false;

//Handle CrashDataAvailable event
EO.Base.Runtime.CrashDataAvailable += Runtime_CrashDataAvailable;

void Runtime_CrashDataAvailable(object sender, EO.Base.CrashDataEventArgs e)
{
    //Save the crash data into a file
    File.WriteAllBytes(crash_data_file_name, e.Data);
}