gpt4 book ai didi

c - 将 c 中的调试消息写入文件?

转载 作者:太空宇宙 更新时间:2023-11-04 08:45:42 27 4
gpt4 key购买 nike

如何将调试消息写入文件?

我正在使用:

void printLog(const char* mylog)
{
#ifdef DEBUG

FILE* pFile = fopen("mylog.txt", "a");
fprintf(pFile, "%s\n",mylog);
fclose(pFile);

#endif

}

但是我该如何编写命令才能进行调试呢?

编辑:

我的意思是,就像我在 android 中知道的那样,您声明例如 Log.i("MyActivity", "MyClass.getView() — get item number"+ position);

我可以用 c 语言将类似的东西写入文件吗?可能是一个变量,一个错误等。

我正在使用:gcc -g -DEBUG -o myexec myfile.c

最佳答案

如果你想做格式化,你可以使用vfprintf()这类似于 printf() 但打印到文件并带有“包装”参数:

void printLog(const char *fmt, ...)
{
#ifdef DEBUG
FILE* pFile = fopen("mylog.txt", "a");
if(pFile != NULL)
{
va_list args;
va_start(args, fmt);
vfprintf(pFile, fmt, args);
va_end(args);
fclose(pFile);
}
#endif
}

然后你可以这样使用:

printLog("you have %d attempts left", numAttempts);

或其他。

当然,您也可以为实际调用#define 一个宏,然后将其全部编译出来。如上所述,调用将保留,但被调用的函数将变为空。聪明的编译器可能会优化此类调用,但您永远无法确定。

假设是 C99,这样的宏可能如下所示:

#if defined DEBUG
#define LOG(fmt, ...) printLog(fmt, __VA_ARGS__);
#else
#define LOG(fmt, ...) /* empty when debugging disabled */
#endif

关于c - 将 c 中的调试消息写入文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21758136/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com