Design

TRACE32 Supports Debugging and Profiling of Android Platforms

10th June 2010
ES Admin
0
Android is an open source mobile phone operating system, originally published by Google. Based on a standard Linux kernel it adds several specialized middleware-components and a software stack for smartphones. Android comes with its own virtual machine called Dalvik, which runs optimized bytecode generated from Java source. Applications built for Android can either be written in native-code languages like C/C++, in Java for Dalvik, or in a combined mode where Dalvik applications use a native library.
TRACE32 In-Circuit Debuggers access the target development board via the processor JTAG connector. Using this hardware approach to gain full control over the CPU, TRACE32 can be used to access peripherals, debug boot code and exception routines, and also has complete system visibility at any given moment. If the CPU supports external tracing using trace ports such as ARM′s ETM, then TRACE32 can record the program flow in real time. You can use the recorded trace to evaluate function nesting, run times or undertake code analysis and profiling.

As TRACE32 has JTAG-access to all areas of the processor core, you can debug device drivers (in-kernel and modules), Linux processes, native Android applications and libraries - and all of these at the same time. No special debug software is required on the target: the debug information generated during target software compile time provides the additional information that is not available via the JTAG. This is called stop mode debugging as the complete system (including the kernel) will halt when a debug breakpoint is reached.

Sometimes, however, some processes must be kept running (e.g. device drivers) whilst debugging an application. This is called run mode debugging and requires a small debug server to be loaded on the target. You can still debug several Linux processes, Android applications and libraries all at the same time, but normally it is not possible to debug device drivers in run mode debugging. A special case is simultaneous co-debugging of native-code components with TRACE32 whilst also debugging Dalvik applications within the Android framework. The framework uses a special debug bridge to connect to the Dalvik application running on the target, this bridge maintains communication under run mode debugging conditions.

If the target supports real-time trace capability, the recorded program flow contains detailed information about the application component run times. TRACE32 creates a comprehensive profiling analysis that shows which application, library or device driver took most CPU time. For native-code components you can track bottle necks down to function and even to source line level. Timing diagrams show the functional flow, and process/thread switches. Dalvik applications can be analysed up to the Java thread level.

Lauterbach continues to work on future enhancements TRACE32 which will further improve Android platform support. In the longer term, Dalvik based Java debugging will be completely integrated into the TRACE32 debug environment.

Product Spotlight

Upcoming Events

View all events
Newsletter
Latest global electronics news
© Copyright 2024 Electronic Specifier