调试程序的方法可能有很多种,每个人的习惯不同,使用的方法也不同。
比如:1 . 在怀疑的地方,加一句 printf ; 2 利用gdb 调试 ; 3. 把错误输入到某个特定的文件 等等
但是我手头上的一个程序,在测试的时候,linux服务器的代码总是输出各种各样的信息,以至于错误的信息都被淹没在“狂沙大漠”之中,千淘万滤虽辛苦,bug 还是找不到。 于是,想了个办法,让错误信息 显示颜色,这样就容易多了。然而这真算不上什么调试方法,倒是对 va_list 类型有了新的认识,这个类型可以帮我实现很多想要做的东西。
#include<stdio.h>
#include<stdarg.h>
static char sprintf_buf[1024];
int err_print (const char * fmt, ...)
{
va_list args;
int n;
va_start(args, fmt);
printf("\033[40;31m%s(%d),error:",__FILE__,__LINE__);
n=vsprintf(sprintf_buf, fmt, args);
sprintf_buf[n]='\0';
printf(sprintf_buf);
va_end(args);
printf("\033[0m");
}
int main()
{
printf("hello,world %s\n","abc");
err_print("hello,world %s,%d,%c\n","abc",4354,'4');
err_print("oh \n");
}
下面是参考其他文章的一些东西。
搜了一下,关于颜色设置的细节从右面的连接可找到 -> http://blog.csdn.net/s_k_yliu/article/details/6695134
40: 黑 30: 黑
41: 红 31: 红
42: 绿 32: 绿
43: 黄 33: 黄
44: 蓝 34: 蓝
45: 紫 35: 紫
46: 深绿 36: 深绿
47: 白色 37: 白色
ANSI控制码:
QUOTE:
\033[0m 关闭所有属性
\033[1m 设置高亮度
\03[4m 下划线
\033[5m 闪烁
\033[7m 反显
\033[8m 消隐
\033[30m -- \033[37m 设置前景色
\033[40m -- \033[47m 设置背景色
\033[nA 光标上移n行
\03[nB 光标下移n行
\033[nC 光标右移n行
\033[nD 光标左移n行
\033[y;xH设置光标位置
\033[2J 清屏
\033[K 清除从光标到行尾的内容
\033[s 保存光标位置
\033[u 恢复光标位置
\033[?25l 隐藏光标
\33[?25h 显示光标