这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界 » 论坛首页 » 嵌入式开发 » FPGA » 在CCS中使用assert和PRINTF小结

共1条 1/1 1 跳转至

在CCS中使用assert和PRINTF小结

工程师
2014-08-18 13:45:05     打赏

CCS中使用assertPRINTF小结


在程序调试过程中,使用assertPRINTF能够大大提高程序调试的效率。在底层驱动程序的调试过程中,合理使用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" ));


3Release模式


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定义,如果有的话,要将其删除。


判断是否成功取消了PRINTFassert的编译,可以切换到mixed mode模式下,查看对应的C语句是否生成了反汇编代码。


共1条 1/1 1 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册 ]