사이트맵 보기

뉴스레터

Android Debugging & Profiling Support

작성일

작성자 관리자

조회수 7101

첨부파일
Android Debugging & Profiling Support

2010년 6월, Lauterbach는 TRACE32를 통해 Android Platform의 Debugging과 Profile을 지원한다고 발표했습니다.

Device Driver, Native Library들 그리고 몇 개의 Native application들은 동시에 디버깅 되며, Real-time Trace(e.g. ETM) 기능을 가지는 CPU들이라면 Native Application에서 function 그리고 Source Line 수준까지, 또 Dalvik Application을 위해서는 Thread level까지 종합적인 run-time profiling 분석이 가능해집니다.

Android는 휴대폰용 Open source Operating System이고 원래 Google에 의해서 만들어 졌으며 Standard Linux Kernel을 바탕으로, 몇 개의 전문화된 middleware component들과 Smartphone들을 위한 Software stack를 추가된 것이다. Android는 Dalvik(Java source로부터 생성되어 최적화된 bytecode로 동작하는)이라 불리는 자체 Virtual machine과 같이 쓰이며 Android를 위해서 만들어진 Application들은 C/C++과 같은 native-code로 작성된 경우, Dalvik을 위한 Java로 쓰여진 경우 그리고 Dalvik application이 native library를 사용하는 Combined mode형태로 나눌 수 있습니다.

TRACE32-PowerDebug는 processor JTAG connector를 통해 “target” 보드를 access합니다 이러한 CPU 구석구석을 전부 제어하기 위한 hardware적인 접근 방법을 이용, Trace32는 Peripheral에 접근하여 사용할 수 있고, boot code와 Exception routine들을 디버깅 하고 또한 어떤 순간에서도 완벽한 system 가시성(visibility)을 갖게 합니다. 만약 CPU가 ARM의 ETM과 같이 trace port를 이용한 외부 tracing 방법을 지원한다면 TRACE32 는 Real time으로 프로그램의 흐름을 저장할 수 있습니다. 또한 저장된 trace 정보를 이용하여 function 하부구조(nesting)와 Run time 또는 수행 code 분석과 Profiling에 사용할 수 있습니다.

TRACE32가 JTAG을 통해 processor core의 모든 영역에 access를 할 수 있기에, device driver(Module, kernel), Linux process, native Android application과 Library들 모두를 동시에 디버그 할 수 있습니다. ”target”에 별도의 특별한 debug software도 불필요합니다: target software가 compile하는 동안 생성된 디버그 정보는 JTAG을 통해서 얻을 수 없는 추가적인 정보를 제공하며 이것은 debug breakpoint에 도착했을 때 Kernel을 포함한 전체의 시스템이 멈추게 되는 “Stop mode debugging”이라고 합니다

그러나 가끔은 몇몇의 Process들은 application을 디버깅 하는 동안에도 반드시 동작을 중단해서는 안되는 경우가 있고(e.g.device driver)이 경우를 “run mode debugging”라고 하며 target에 올려질 작은 “debug server”가 필요하게 됩니다. 개발자들은 여전히 몇 개의 Linux process, Android application, library들 모두를 동시에 디버깅 할 수 있습니다. 그러나 보통은 “run mode”디버깅 상태에서는 device driver 들을 디버깅하는 것은 쉽지 않습니다.

Special case로는 Android Framework내에서 Dalvik application을 디버깅 하는 동안 TRACE32를 가지고서 native-code component들에 대한 동시 co-debugging을 들 수 있습니다 이 framework는 특별한 “debug bridge”를 이용해서 target에 동작중인 Dalvik application 에 연결하고 이 bridge는 run mode debugging 조건 하에서 통신을 유지하도록 합니다. 만약 target이 real-time trace 기능을 지원한다면, 저장된 program flow에는 application component 수행 시간에 대한 자세한 정보를 가지고 있게 됩니다. 그렇게 되면 TRACE32는 포괄적인 profiling 분석을 통해 어떤 application, Library 또는 device가 CPU 시간을 점유하는지를 쉽게 보여줍니다. Native code로 작성된 component들을 위해 function level 심지어 source line level까지 내려가 bottleneck을 추적할 수 있으며 Timing diagram들은 함수들의 flow process/thread switching 관계를 보여 줍니다. Dalvik application의 경우는 JAVA thread level까지 분석 되어 집니다.

Lauterbach는 Android platform support를 더욱 강화하기 위해서 훨씬 많은 기능의 TRACE32를 지속적으로 Update할 것 입니다. 장기적인 관점으로 보면 Dalvik 기반의 Java debugging은 TRACE32 디버그 환경(PowerView) 안으로 완벽하게 통합되게 될 것입니다.

고객문의 기술지원/
데모/
SW요청
031-627-
3116