The mobile application industry has seen exponential growth over the past few years and mobile apps have become universal and an integral part of our lives. Mobile user's expectations have increased multifold as the reliance on these apps has increased. As mobile apps are being used as critical tools in our day to day lives, the mobile app's quality with respect to the features provided, performance and user experience becomes utmost important.
Issues reported by the customer need to be addressed quickly. A good and an effective mobile debugging tool hence holds much importance in such scenarios. Without proper debugging tools and logs, developers will take lots of time to fix the issue and also the fixes provided may not be stable resulting in regressions
In this post we will take a look at various debugging tools available which can be used both to debug issues reported internally by your QA team as well as by your customers. Android and iOS cover most of the smartphone market across the globe, hence we will cover the tools that are relevant to Android and iOS
In the subsequent sections, we will first cover the debugging tools & capabilities provided by Apple and Google in their respective application development environments, followed by other popular debugging tools for mobile applications.
Debugging tools for mobile
1. Firebase Crashlytics
Firebase Crashlytics is a real time crash reporting tool, that automatically collects, analyses and organizes your crash reports. This helps you to monitor the stability of your apps. It also helps you to understand which issues are important so that you can take those on priority. Crashlytics provides a dashboard of all the crashes and alerts you with the new issues.
With the help of logs and key value pairs, you can add context in the stack trace to each of the crashes which in turn helps you to analyse what your app was doing at the time of the crash. Firebase Crashlytics is free and available both for android and iOS platforms. Crashlytics is very easy to integrate with the existing workflow of your application. Click here for more details
ACRA is an open source library enabling android applications to automatically post their crash reports to a backend server. ACRA is targeted for android application developers to help them get data from their applications when the app crashes or behaves erroneously. Due to the nature of the licence (Apache 2.0), active contributors and various customizations options enabled, ACRA becomes one of the popular tools used by Android developers to report crashes.
ACRA allows the developers to configure how their crash reports should be uploaded (can be configured to upload reports to a custom backend sever, mail to a predefined mail lists), configure contents of the crash reports, add custom traces that can be captured and published with or without crashes.
There are no dependencies on google play store which means apps which are not published on play store can integrate ACRA. ACRA can be customised to work with your own backend or with an existing backend (For ex: Acrium). Click here for more details.
Smartlook provides you, mobile application analytics information that helps you to track & understand your customer behaviour, generates crash reports, funnels and heatmaps. Smartlook has different modes of capturing the screen when customers are using your application.
You can switch between native apps mode, game recording mode or wireframe mode based on what user behavior or which issue you want to look at and analyze. Smartlook tracks all the user actions and allows you to filter these events to find the exact information you are looking for.
Light weight SDK, easy integration on both iOS and Android platform and SOC/GDPR/CCPA compliance makes it one of the emerging mobile application analytics tools in the market. Click here for more details.
UXCam provides mobile application analytical solutions. Works for all flavours of mobile apps and platforms. UXCam helps in identifying your application usability issues, understand your application Key Performance Indicators (KPIs) and helps in improving your customer journey. Supports native, hybrid apps, android and iOS platforms.
UXCam records your application sessions, captures all the key presses & user interactions with your application, tracks UI freezes, crashes and also handles exceptions. UXCam dashboard provides heat maps and screen flow analytics.
UXCam allows you to define your own events, send these events to your dashboard and build custom funnels. Easy integration and light weight SDK makes UXCam a good commercially available tool for mobile analytics. Click here for more details.
UserExperior is a commercially available mobile application and analytics tool which helps you visualise, understand, fix issues and improve your user experience. UserExperior is easy to integrate, supports various programming languages of android and iOS. UserExperior provides session recordings that helps you to visualize customer behaviors and crashes and captures all the user interactions and screen transition information.
It provides heatmaps and charts to help understand customer journeys. Application performance monitoring is the other thing which can be tracked using UserExperior, which allows you to integrate with other analytical tools like Crashlytics, Mixpanel, Clevertap which makes it even more powerful. It follows enterprise grade security compliance. Like many other similar tools, UserExperior provides a 14 day free trial. Click here for more details.
6. New relic
New relic mobile monitoring solution helps you to improve user experience by providing details on all the application crashes, stack traces of the crashes, handles exceptions, custom log enabling/collections and capturing various http/network errors thrown by your application. New relic provides very detailed information on the various http or the network errors reported by the application like, response time for each of the requests, errors filtering based on URLs, domains, http methods etc.
New relic also captures application launch times, most frequently used activities or screens inside your application. It works with various mobile application frameworks, supports iOS and Android platforms. New relic is very easy to integrate and supports integration with various other popular tools like Jira. Click here for more details.
There are many more commercially available mobile debugging and monitoring tools provided by Zipy, Fullstory, Instabug, Bugsnag, Sentry, etc which offer standard mobile debugging functionalities. Most of these tools provides a free trail period which can be used to evaluate based on individual needs and preferences.
On device developer options
Settings app on Android includes a screen called Developer options that lets you configure system behaviors which help you profile and debug your app performance. Developers can enable debugging over USB, capture a bug report, enable Bluetooth HCI snoop logs, track layout bounds, check the performance of the device with various window animation scales and monitor various app performance related attributes.
Running their applications on various device configurations with these attributes set will provide the developers a comprehensive view of their application performance. Click here for more details
Once the application gets published in the respective play stores or gets released to your customers, it's very important to monitor the stability of your application. Buggy and unstable apps make your customers unhappy which will result in providing negative reviews and uninstalling of the applications.
Monitoring your apps when your customers start using them will become crucial. Apps can crash and also behave erratically which results in a bad customer experience. Customer reported issues are sometimes tricky to solve, without proper logs and debugging tools. Developers struggle to understand the environment in which a customer has encountered a particular issue.
There are various tools available which can be integrated along with your application that can monitor your application behavior in real time, report crashes and other critical issues as and when they occur. Some of these tools are open source while others are licensed. We will be covering some of the popular mobile debugging tools in the subsequent sections.
Application development environments for mobile debugging
Android studio is an official integrated development environment (IDE) for developing and debugging android applications. Android studio supports various programming languages such as java, kotlin, C++, react-native, flutter and many other languages. Android studio allows you to debug an application running either on a simulator or on a device.
Debugging with android studio enables you to set breakpoints in your application, viewing and modifying the contexts when breakpoint hits, viewing stack traces and system logs. Additionally, Android studio also does the following:
- Allows you to debug your UI with layout inspectors and validators
- Allows you to inspect network traffic with network inspector
- Inspect database with database inspectors
- View on device files with file explorer
- Allows you to take screenshots and record a video
- Allows you to capture and read bug reports
- Android studio also allows you to profile your app and provide real time data on how your app uses the CPU, memory, network and battery resources
Debugging your application with android studio is very useful when your app has not been published or released to your customer. Usually android studio is useful for debugging issues reported in house or issues you find with your own testing. Click here for more details
Xcode is Apple's IDE for developing and debugging iOS applications. Xcode supports various programming languages such as Swift, Objective-C, Java, Apple script, react-native, Flutter and several other languages. Xcode allows you to debug an application running either on a simulator or on a device. The following are the support functions of Xcode:
- Supports setting up breakpoints
- Viewing and modifying the context of your application when the breakpoints hits,
- Viewing debugger reports (which are very useful for debugging UI issues),
- Debug memory graph for memory leaks
- Simulate location changes
- Viewing process/thread context information of your application
- Stack traces
- Network traffic and any other device specific information
- Helps you to profile your application performance
Debugging your application with Xcode is very useful when your app has not been published or released to your customer. Usually Xcode is useful for debugging issues reported in house or issues you find with your own testing. Click here for more details
Debugging some times becomes painful and enervating. Using the right set of tools to debug becomes very important especially when the issues are reported from your customers and require quick resolution. Using right debugging tool would vary depending on:
- Android or iOS or any other mobile OS
- Mobile frameworks (java/kotlin vs react-native vs swift vs flutter)
- Kind of issues that you are expected to address (performance issues vs functional issues vs stability issues)
- Kind of third party integration support that the debugging tool which you plan to choose offers (support of jira, slack etc)
- Data compliance support on these debugging tools and lastly the commercial aspects (how much you can afford).
Based on these you can choose the suitable debugging tool. Finally the tool should make debugging easy and help you to “Fix what matters” most for your business.