Guy*_*Guy 7 embedded code-coverage gcov
我为非POSIX嵌入式系统编写项目,所以我不能使用gcc选项--coverage(我没有读或写).我还能做些什么来产生类似输出的gcov.我有一个输出功能.
它可以通过具有嵌入式跟踪的处理器,暴露跟踪端口的电路板设计以及合适的硬件调试器和关联软件来轻松完成.例如,许多基于Cortex-M的设备都包含ARM的嵌入式跟踪宏单元(ETM),Keil的uVision IDE和ULINK-Pro调试器支持这一功能,以提供代码覆盖和指令/源级跟踪以及实时分析.硬件跟踪的优势在于它是非侵入式的 - 代码可以实时运行.
如果您没有硬件支持,则可能需要使用模拟.许多工具链包括将执行跟踪,代码覆盖和分析的指令级模拟器,但您可能必须创建调试脚本或代码存根来模拟硬件以强制执行所有路径.
第三种方法是在具有存根的桌面平台上构建代码,以替换目标硬件依赖性,并对其执行测试和代码覆盖.您必须相信目标C编译器和测试系统编译器都使用相同的语义转换源.这里的优点是可用的调试工具通常优于嵌入式系统可用的调试工具.您还可以在任何硬件可用之前测试大部分代码,并且在大多数情况下,执行代码的速度要快得多,可能允许进行更广泛的测试.
没有POSIX API并不排除使用GCC,它只是排除了使用GNU C库.在没有POSIX的嵌入式系统上,使用了替代的C库,例如Newlib.Newlib有一个系统移植层,用于实现I/O和基本堆管理.