Overview
The article discusses LinkedIn's approach to mobile crash reporting, detailing the development of an internal tool to effectively capture and analyze crash data while addressing security concerns. It highlights the architecture, challenges faced, and solutions implemented to enhance the crash reporting system.
What You'll Learn
1
How to implement an internal crash reporting tool for mobile applications
2
Why capturing detailed crash context is crucial for debugging
3
When to use Kafka for event streaming in crash reporting systems
Prerequisites & Requirements
- Understanding of mobile application development and crash reporting concepts
- Familiarity with Kafka and Elasticsearch(optional)
Key Questions Answered
How does LinkedIn's crash reporting tool improve crash analysis?
LinkedIn's crash reporting tool enhances crash analysis by providing a comprehensive overview of crashes, integrating with JIRA for tracking exceptions, and capturing detailed context about each crash. This allows developers to quickly identify and resolve issues, improving app stability and user experience.
What challenges did LinkedIn face in developing their crash reporting system?
LinkedIn encountered several challenges, including ensuring crashes were reported even during app shutdown, managing memory in data processing jobs, and obtaining symbol files for iOS. Solutions included sending crash reports in the same thread as the crashing thread and optimizing memory usage in processing jobs.
What technologies are used in LinkedIn's crash reporting architecture?
The architecture utilizes several technologies, including Breakpad for capturing native crashes on Android, PLCrashReporter for iOS, Kafka for event streaming, and Elasticsearch for querying crash data. This combination ensures efficient crash data handling and analysis.
Technologies & Tools
Some links below are affiliate links. We may earn a commission if you make a purchase.
Backend
Breakpad
Used to capture native crashes on Android.
Backend
Plcrashreporter
Used to capture crashes on iOS.
Backend
Kafka
Used for event streaming of crash reports.
Backend
Elasticsearch
Used for querying crash data.
Database
Pinot
Used to store session and user count data.
Key Actionable Insights
1Implement an internal crash reporting tool to maintain control over sensitive data and improve security.Using an internal tool allows organizations to avoid sending sensitive crash data to external services, which can pose security risks. This is particularly important in industries where data privacy is crucial.
2Integrate crash reporting with issue tracking systems like JIRA to streamline the debugging process.By linking crash reports directly to JIRA, developers can efficiently track and manage exceptions, ensuring that issues are addressed promptly and effectively.
3Utilize Kafka for handling high volumes of crash event data to ensure scalability.Kafka's event streaming capabilities allow for real-time processing of crash data, which is essential for maintaining performance in applications with rapid release cycles.
Common Pitfalls
1
Failing to send crash reports in the same thread as the crashing thread can lead to lost data.
This happens because the underlying networking stack may not allow new threads to be spawned during app shutdown. To avoid this, always ensure crash reports are sent in the same thread.
2
Running out of memory in data processing jobs due to large crash payloads.
This can occur if the default configuration for event storage is too high. Reducing the number of events kept in memory can prevent crashes in processing jobs.
Related Concepts
Crash Reporting Best Practices
Event Streaming With Kafka
Integrating Issue Tracking Systems With Crash Reporting