您的位置:首页 > 运维架构 > Shell

一个简单的消除调试打印方法

2007-07-12 21:17 381 查看
我的工程都是在终端上运行,用C语言实现,调试时有很多打印信息,一开始也没有注意,现在准备把软件正式发布的时候,才发现这么printf屏蔽掉也是件麻烦的事情,或者用#ifdef DEBUG这个太烦,或者你查找printf并替换成//printf。这样的有点不安全,比如如果是printf与}此类括号写在一起的就会出错,当然一般是不会这么写的。

我所做的是首先写一个my_printf(...)的函数,具体实现如下:


#include <stdarg.h>




#define DEBUG 0




inline static void my_printf(char* format,...)




 ...{


#ifdef DEBUG


         va_list ap;


         va_start(ap, format);


         vprintf(format, ap);


         va_end(ap);


#endif


 }

你只要把上面这个函数的定义放在某个头文件里,然后让所有调用printf的源文件都包含这个头文件就可以了。

然后把工程里面所有包含printf的函数都替换成my_printf(注意你的工程中是否有其他还有printf字符串的变量或函数,我这里只屏蔽掉了fprintf),用shell 实现:

sed -i "s/printf/my_printf/g" `grep [^f]printf -rl .'

好了,如果你不想有打印信息,只要把#define DEBUG 0 注释掉就可以了,不会增加任何目标代码。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  shell 终端 语言 c
相关文章推荐