To improve the quality of mobile apps, developers need to monitor app performance in the wild. This task is made challenging by the asynchronous nature of mobile apps, and the resource limitations of the mobile platform. To address this challenge, we have developed a system called AppInsight that instruments app binaries to automatically identify the critical path in user transactions, across asynchronous-call boundaries.
AppInsight is lightweight, and does not need any changes to the phone OS.
Our goal is to gain insight into the behavior of mobile apps, and to use these insights to improve user experience. We do this by instrumenting the apps, and collecting detailed logs at various stages of app lifecycle. Both the app developers and the Microsoft app platform benefit from the insights gleaned (Appinsight, Timecard and VanarSena). The instrumentation can also be used to alter the behavior of the apps at runtime. For example, we can show more relevant mobile ads (SmartAds), or o save bandwidth (Procrastinator).