首页 > 编程语言 >C/C++ 中的几种调试技巧(待续)

C/C++ 中的几种调试技巧(待续)

时间:2022-10-23 11:23:07浏览次数:64  
标签:待续 ... stdout sum C++ VA fprintf 调试 define

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

标签:待续,...,stdout,sum,C++,VA,fprintf,调试,define
From: https://www.cnblogs.com/mtydd/p/16818165.html

相关文章