Improved iOS stack traces
Posted Jan 22, 2016 | 3 min. (483 words)Today we’re pleased to announce that we’ve updated our symbolication process to improve your iOS stack traces. Symbolication is where we run your iOS crash reports and dSYM files through a process that converts the memory addresses into a readable stack trace. This is an important process that makes it much easier for you to debug exceptions in your applications. To compare the improvements, here’s an example of a bad stack trace:
A few things are not right here:
- Swift symbols are mangled which are inconvenient to read.
- In rare cases, symbolication could fail to resolve the symbols.
- There are no file names or line numbers anywhere. This is something that used to work, but broke for code compiled with XCode 7.
Now lets take a look at the improvements applied to that same stack trace:
- Swift symbols are being unmangled and much easier to read.
- Lines that previously failed to be symbolicated can now be resolved.
- File names and line numbers are available for your code.
- The stack trace is now formatted in a way that iOS developers are familiar with.
Much better! These improvements will affect all your iOS exception reports coming into Raygun from now on.
Improved iOS exception grouping
In case you missed it at the end of last year, another improvement that has been made in this area is grouping exceptions after the symbolication process. This means that the grouping logic will be able to use the symbolicated stack trace to group reports that are coming from the same place in code. Previously, grouping was done using the message or signal codes. This would often create multiple groups for the same problem (If there is instance values in the message), or group multiple problems together (If they have the same signal codes).
Changes to the grouping logic will cause new incoming exceptions to be allocated to new groups, and the old groups will no longer get any new exceptions. Because of this, we don’t enable grouping changes to your applications, and leave this for you to enable if you wish. As the previous iOS grouping was so poor, we highly recommend switching to the new iOS stack trace grouping logic.
Here’s how to update to the improved iOS exception grouping.
In your Raygun application, select “Application settings” in the side menu. Then select “Crash Reporting” that appears below it. Scroll to the bottom to find the list of classification strategies that your app is currently using. Here is one of my Raygun apps that I use for testing several providers:
Find any strategies labelled “Raygun4iOS” and hit the “Change” button to open the following form:
Now simply change the version in the drop down to the latest one, type “CHANGE” into the text box and click “Change Strategy”.
We hope that all these improvements make it even easier for you to debug your iOS applications and fix exceptions.