Abstract
The increasing demands for functionalities, performance, and battery life cycles have placed very stringent design and development requirements on mobile systems. To ease the development efforts, programmers have relied heavily on virtual platforms, such as Android-QEMU, to build and test their applications as well as system software. Being a software implementation of hardware architecture, virtual platforms are also valuable for mobile system designs. For example, it is easy to add tracing modules to the virtual platforms to dump the execution trace of the guest system, which can then be used to estimate and evaluate the performance of alternative system designs by coupling with appropriate system timing models, RTL or SystemC models, etc. The problem is that tracing in such virtual platforms is basically performed at the architecture level, which makes it difficult to generate trace for specific applications due to a lack of high-level software information. For mobile systems running Android, the problem becomes even more challenging, because Android follows a component-based design strategy, in which applications request services from other components (processes) instead of including everything in its own addressing space. It is thus necessary to track the execution flow of the target application through the service invocations and dump the corresponding execution trace. This thesis presents a novel tracing system on Android-QEMU, which follows the invocations among the service components and generates component-service-aware trace only for the specific applications of interest. Our evaluation results show that the proposed tracing system induces less than 1% overhead in terms of simulation time and improves in average 152% in simulation time and 33% in storage space.