18. 调试
调试是软件开发的关键部分,通常被认为是过程中最耗时,因此也是最昂贵的部分。它使软件开发人员能够创建满足高性能、低功耗和可靠性三个关键标准的应用程序、中间件和平台软件。然而,bug可能难以检测、重现和修复,也很难预测解决bug所需的时间长度。当产品交付给客户时,解决问题的成本显著增加。在很多情况下,当产品的销售时间窗口较小时,如果产品推迟,就会错失市场机会。因此,系统提供的调试工具对于任何开发人员来说都是至关重要的考虑因素。
许多使用 ARM 处理器的嵌入式系统具有有限的输入/输出设施,意味着传统的桌面调试方法(例如使用printf())可能不合适。在过去的系统中,开发人员可能会使用昂贵的硬件工具(如逻辑分析仪或示波器)来观察程序的行为。本书中描述的处理器是包含内存、缓存和许多其他模块的复杂片上系统 (SoC) 的一部分。可能没有在芯片外可见的处理器信号,因此无法通过连接逻辑分析仪(或类似设备)来监控行为。出于这个原因,ARM 系统通常包括专用硬件,以提供广泛的控制和观察设施以进行调试。
外部调试特性最初是在ARMv4架构处理器上引入的,以支持使用嵌入式和深度嵌入式处理器的开发人员,现在已经发展成为广泛的调试和跟踪特性组合。对丰富应用程序软件平台的支持,特别是对自托管调试和性能分析的支持,是最近在ARMv6和ARMv7-A架构中添加的。</