From this topic, we will get to know:
- What are symbolicated crash logs?
- Why we need symbolicated crash logs?
- Types of symbolicated logs
- Importance of symbolicated crash logs
What are symbolicated crash logs?
-
Symbolicating a crash log is the process of converting memory addresses in a crash report into human-readable function names and line numbers.
-
Symbolication is the process of resolving backtrace addresses to source code method or function names, known as symbols into human readable format. Without first symbolicating a crash report it is difficult to determine where the crash occurred.
Why we need symbolicated crash logs?
When an application crashes, a crash report is created by OS which is very useful for understanding what caused the crash and are typically very useful for debugging issues in the application which caused the crash to happen. We should look at these crash reports to understand what issues our application is having causing the crash, and then try to fix the issues in our application.
Types of symbolicated logs
Fully symbolicated crash report
- A fully symbolicated crash report has function names on every frame of the backtrace, instead of hexadecimal memory addresses.
- Each frame represents a single function call that’s currently running on a specific thread, and provides a view of the functions from your app and the operating system frameworks that were executing at the time your app crashed.
- Fully symbolicated crash reports give you the most insight about the crash.
Partially symbolicated crash report
- A partially symbolicated crash report has function names for some of the backtrace frames, and hexadecimal addresses for other frames of the backtrace.
- A partially symbolicated crash report may contain enough information to understand the crash, depending upon the type of crash and which frames in the backtraces are symbolicated.
Unsymbolicated crash report
- Unsymbolicated crash reports contain hexadecimal addresses of executable code within the loaded binary images.
- These reports don’t contain any function names in the backtraces. So, an unsymbolicated crash report is rarely useful.
Importance of symbolicated crash logs
Crash reports with backtraces need to be symbolicated before they can be analysed. Symbolication replaces memory addresses with human-readable function names and line numbers. If we get crash logs off a device through Xcode’s Devices window, then they will be symbolicated automatically after a few seconds. Otherwise we will need to symbolicate the crash file ourself by importing it to the Xcode Devices window.
As continuation to this article go through iOS: How to generate symbolicated crash logs