1 C-RUN
C-RUN直接集成在IAR Embedded Workbench for Arm中,在代码执行过程中进行动态代码分析,及时发现运行时发现的实际错误。
C-RUN可以检查算术问题、边界问题和堆完整性,各个功能特点:
- 算术问题:
- 包括溢出、环绕、转换错误、除0、switch缺少default语句。
- 通过在潜在错误可能发生的所有位置插入特点的测试代码检查此类错误。
- 源代码级别的测试通常会被为插入一个if或者等效语句,检查条件,并将辅助信息内容打印在stdout或者特殊值写入端口以记录问题。
- 边界问题:
- 包括:典型的越界问题;
- 越界概念可以推广到通过指针访问的任何内容、类型及大小。包括指向堆栈上的标量对象的指针,如果更改指针,指向堆栈上的某个内容,那么边界检查器可以检测到指针的新值是否在有效对象的边界内。
- 堆完整性:
- 完整性检查在每次调用malloc、free等函数时进行,无论是在C还是C++环境中。
- 如果堆很大,堆完整性检查可能会对性能产生真正的负面影响,因为检查可能涉及到遍历整个堆,因此决定检查频率的方式对于应用程序至关重要。
C-RUN具体功能包括:
-
分析C和C++代码;
-
可在工程配置栏“Runtime Checking”中进行设置;