在CCS中使用assert和PRINTF小结
在程序调试过程中,使用assert和PRINTF能够大大提高程序调试的效率。在底层驱动程序的调试过程中,合理使用assert函数,可方便的排查错误。使用PRINTF宏,在调试时,输出一些辅助信息,进行人机交互,可帮助程序员了解程序的运行情况;而在release时,又避免占用存储空间。
总结这两条语句的使用步骤如下:
1、准备
定义一个common.h的头文件,将其包含在调试源文件中。
2、调试模式
在调试模式下,设置common.h内容为:
#ifndef DEBUG // 定义表示调试模式
#define DEBUG
#endif
#ifdef DEBUG
#define PRINTF(x) printf x
#else
#define PRINTF(x) ((void)0)
#endif
#include <assert.h>
#include <stdio.h>
注意要包含assert.h,否则assert函数编译无法通过;要包含stdio.h,否则printf语句编译可通过,但不会打印到屏幕上。
调用PRINTF宏时,需要添加两个括号,例如:
PRINTF(( "Hello World!\n\r" ));
3、Release模式
在release模式下,修改common.h内容为:
#ifndef NDEBUG // 取消调试模式
#define NDEBUG
#endif
#ifdef DEBUG
#define PRINTF(x) printf x
#else
#define PRINTF(x) ((void)0)
#endif
#include <assert.h>
#include <stdio.h>
取消调试模式,对PRINTF宏,只需注释DEBUG宏定义语句即可。而要取消assert编译,除了注释DEBUG宏定义,还需定义NDEBUG。注意查看bulid options->processor->predefine symbol中,是否有DEBUG定义,如果有的话,要将其删除。
判断是否成功取消了PRINTF和assert的编译,可以切换到mixed mode模式下,查看对应的C语句是否生成了反汇编代码。