C/C++ 中的几种调试技巧(待续)
1、利用#define 宏定义作为调试开关
include <stdio.h>
define DEBUG // 可以注释或打开输出
int main(void)
{
int i, sum;
for (i = 1, sum = 0; i <= 5; i++)
{
sum += i;
ifdef DEBUG
printf("sum += %d is %d\n", i, sum);
endif
}
printf("total sum is %d\n", sum);
}
2、DBGprint宏作为调试输出
include <stdio.h>
ifdef DEBUG
define DBGprint(...) printf(VA_ARGS)
else
define DBGprint(...)
endif
int main(void)
{
int i, sum;
for (i = 1, sum = 0; i <= 5; i++)
{
sum += i;
DBGprint("sum += %d is %d\n", i, sum);
}
printf("total sum is %d\n", sum);
}
一些调试输出的宏
define ERROR(...) /
do{ /
fprintf(stderr, "[ERROR ]%s %s(Line %d): ",FILE,FUNCTION,LINE); /
fprintf(stderr, VA_ARGS); /
}while(0)
define WARNING(...) /
do{ /
fprintf(stdout, "[WARNING]%s %s(Line %d): ",FILE,FUNCTION,LINE); /
fprintf(stdout, VA_ARGS); /
}while(0)
define INFO(...) /
do{ /
fprintf(stdout, "[INFO ]%s %s(Line %d): ",FILE,FUNCTION,LINE); /
fprintf(stdout, VA_ARGS); /
}while(0)
define SHOW_TIME(...) /
do{/
extern unsigned long long gLatestTime;/
timeval tp;/
gettimeofday(&tp, NULL);/
unsigned long long now = tp.tv_sec*1000000+tp.tv_usec; /
if(gLatestTime != 0) /
{ /
fprintf(stdout, ">>>>>>>>>Used Time: %s[%d], %s: %ld.%ld, %llu ms ", FILE, LINE, func, tp.tv_sec, tp.tv_usec, (now-gLatestTime)/1000);/
fprintf(stdout, VA_ARGS); /
fprintf(stdout, "/n"); /
} /
gLatestTime = now;/
}while(0)
ifdef DEBUG
define DBG(...) /
do{ /
fprintf(stdout, "[DEBUG ]%s %s(Line %d): ",FILE,FUNCTION,LINE); /
fprintf(stdout, VA_ARGS); /
}while(0)
else
define DBG(...)
endif
转自:https://blog.csdn.net/u012707739/article/details/80217959