Mobile developers might often suffer from app crashes. Instana provides a crash collection and analytics process for them to detect, understand and resolve app crashes promptly. This crash analytics feature minimizes the number of affected users, reduces the negative impact of crashes and ultimately improves the user experience.
Symbolication
When an app crashes, the operating system collects diagnostic information about the app at the time of the crash. One of the most important parts of the crash report are the thread backtraces, which are reported as hexadecimal addresses. Instana translates these addresses into readable function names and line numbers in source code through a process called symbolication. Symbolication is achieved by using debug symbols.
dSYM(debug Symbol) file
When Xcode compiles your source code into machine code, it generates a list of symbols in your iOS app — class names, global variables, and method and function names. Debug symbols associate these symbols with file and line numbers where they’re defined. All debug symbols are stored in a dSYM file for each binary file in an app. With the dSYM files, the crash report can be symbolicated to show function names and line numbers instead of memory addresses.
Analyzing iOS app crashes
To collect and analyze iOS app crashes with dSYM files, complete the following steps:
1. Create a mobile app in the Instana UI:
a. Go to Websites & Mobile Apps > Mobile Apps.
b. On the Mobile Apps tab, click Add Mobile App.
c. Enter a mobile app name.
![Add Mobile App
Get started with mobile app monitoring to better understand how your mobile app
performance impacts user experience. Configuration is simple!
Mobile App Name
Add Mobile App](https://dw1.s81c.com//IMWUC/MessageImages/6a737b09ca114663a2497bc90e207c57.png)
d. Record the values for Reporting Url and Key.
![](https://dw1.s81c.com//IMWUC/MessageImages/aca69abab3604798bef802d08f2380f8.png)
2. Add the Instana iOS agent as a dependency to your iOS app by using one of the following tools:
- Swift Package Manager (through Xcode)
- CocoaPods
For more information, see iOS agent installation.
3. Set up the Instana iOS agent with crash collection enabled:
a. Initialize the Instana iOS agent by calling the setup() function in your app code.
b. Set the enableCrashReporting property to true.
import UIKit
import InstanaAgent
@UIApplicationMain
class AppDelegate: UIResponder, UIApplicationDelegate {
var window: UIWindow?
func application(_ application: UIApplication,
didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {
Instana.setup(
key: "pUGWKa8aRq6RnyJWibf-MQ",
reportingURL: URL(string: "https://instana.rocks/mobile"),
enableCrashReporting: true
)
return true
}
}
4. Build your iOS application with symbol information in Xcode:
a. Configure the Debug Information Format build setting to DWARF with dSYM File.
b. Set the Generate Debug Symbols option to Yes.
![](https://dw1.s81c.com//IMWUC/MessageImages/e146bd1340e1496a9fed89ef98cdf29f.png)
By configuring these settings, Xcode generates the related dSYM files for your app during building.
5. Release your iOS app and install the app on your iOS device.
6. Upload your compressed dSYM files to the Instana backend:
a. In the Instana UI, create a configuration to upload the dSYM file:
![](https://dw1.s81c.com//IMWUC/MessageImages/346edc70617b47e8b59710e42695a082.png)
b. Compress your dSYM files into a .tgz file.
c. Upload the file by using the Instana web REST API.
![EUM iOS Crash
Edit Symbol File Upload Configuration
Description
An upload configuration will help you to better organize your uploaded files.
Description
exampleApp
Uploading Symbol Files
x
Filters
Summary
Platfor
HTTP Re
CONFIGURATION
Options
Privacy
Stack Trace Translatior
Custom Geographic D
Upload your symbol files by calling Instana's Web REST API. This could be integrated into your pipeline process for automated deployment.
The explanation and usage of our Web REST API is defined within our documentation.
Upload Symbol File API
https://release-instana.instana.rocks/api/mobile-app-monitoring/config/pUGWKa8aRq6RnyJWibf-MQ/sourcemap-upload/97c2a68e590e6ed/form
Commit Symbol File API
https://release-instana.instana.rocks/api/mobile-app-monitoring/config/pUGWKa8aRq6RnyJWibf-MQ/sourcemap-upload/97c2a68e590e6ed/commit
Remove All Files API
https://release-instana.instana.rocks/api/mobile-app-monitoring/config/pUGWKa8aRq6RnyJWibf-MQ/sourcemap-upload/97c2a68e590e6ed/clear
Examples
Prepare iOS app symbolication file or Android java mapping file
Compress the IOS app's dSYM folder or Android java mapping file into one tgz file.
To compress the app's dSYM folder, run following command 'tar czf your _ app. dSYM. tgz your_app.dSYM_folder' .
If the compressed file is larger than 101B, split the file into multiple blobs.
To split the tgz file, run following command 'split —b 9m your_dSYM_fite.tgz tgz_blob_
Upload IOS app symbolication file or Android java mapping file blob by blob
curl
—location
—request PUT \
' https : / / release—instana. instana. rocks/api/mobi
Copy
Copy
Copy
Dec 27
10 minutes
files. Adding an upload
sights into Mobile App crash
onfiguration
d
27, 10:48:12](https://dw1.s81c.com//IMWUC/MessageImages/8b1b3721430b41b397ed3118644374a4.png)
For more information, see Uploading dSYM files.
7. Simulate an iOS app crash
a. Trigger a crash of your iOS app, such as memory access error or no disk storage.
b. Start your app again.
8. Analyze crashes in the Instana UI:
a. Go to Websites & Mobile Apps > Mobile Apps.
b. Click your mobile app.
c. On the Crashes tab, click an error message group. You can view all crash details. The details include the number of crashes, number of affected users, error messages, stack trace, and other information.
![](https://dw1.s81c.com//IMWUC/MessageImages/6d83a05c6c4f42659021426917a10e7f.png)
The pretty stack trace provides a symbolicated result of the crash log with following information, which helps you diagnose issues in your app more easily.
-
- Image class
- File name
- Function name
- Line number of the code in the file
- Memory address
Summary
Instana crash analytics provides deep insight into the stability and performance of mobile apps, which helps mobile developers to provide more stable products with better user experiences.
Co-Authors:
#EUM