自 2006 年以来,Lauterbach 支持 Java 程序的调试,适用于 Java 虚拟机 J2ME CLDC、J2ME CDC 和 Kaffe。由于虚拟机越来越受到欢迎,因此虚拟机供应商的数目正在快速增涨。目前,并非所有虚拟机都是开源的,为了让虚拟机供应商及其用户能够根据其虚拟机特性,灵活的调整调试功能,Lauterbach 从 2010 年中开始致力于开发一种新的解决方案。以 Android Dalvik 虚拟机在 ARM 核的实现,做为停止模式下开发虚拟机应用程序接口的范例.
两个“调试世界”
对于系统开发者,Android 是一个开源软件栈,包括以下组件(见图 3):
• Linux 内核及其硬件驱动程序。
• Android Runtime 与 Dalvik 虚拟机以及一系列程序库:经典 Java 内核库,Android 特殊库、C/C++ 程序库。
• Java 应用程序及其支持的应用构架。
Android 软件可采用各种语言编写:
• Linux 内核、一些程序库与 Dalvik 虚拟机代码可采用C、C++ 或 Assembler 编写。
• 虚拟机应用程序及其支持的应用构架可采用 Java 语言编写。
每个代码块都在单独的“调试世界”内测试。
调试 C/C++ 程序和汇编程序代码
通过使用 JTAG 接口,采用 C/C++ 和汇编器编写的Android 程序可以在目标硬件上以停止模式调试。在停止模式调试时,TRACE32 调试器可直接与 Android 硬
件平台的处理器通讯(见图 4)。停止调试模式的特点是:当处理器被停止以进行调试时,整个 Android 系统亦停止运行。
停止模式调试具有以下主要优势:
• 只需一个有效的 JTAG 接口即可实现调试器与处理器之间的通讯。
• 无需在目标上加载调试服务程序,因此非常适合于测试已发布软件。
• 它允许实时测试,因此能够有效调试仅在实时情况下才出现的问题。
目前,停止模式调试暂不支持在 Dalvik VM 等虚拟机上调试 VM 应用程序,因此要实现所有软件层上均能够透明调试仍然需要一段时间。
文章评论(0条评论)
登录后参与讨论