我有这种非常奇怪的行为:
在下面的代码中:如果我评论对 MyLogger 的调用,那么一切正常,即我得到了 sTempNr 标记并打印了 4 个标记。但是,如果我取消注释对 MyLogger 进行日志记录的调用,那么只会发生一次迭代,并且在具有如下类似代码的其他测试类中,会发生 4 次以上的循环,并将冗余信息发送到 MyLogger。
因此,我使用 Purify 工具检查了 MyLogger 中是否存在一些内存问题。找不到。MyLogger 正在使用 vaargs 来提取 args 和 vfprintf 调用来打印。
我不确定如何进一步调试此代码。任何指导将不胜感激!。
char sTempNr[41] = "1129Z13589.2.9.10";
char *sTempStr;
sTempStr = NULL;
sTempStr = strtok(sTempNr,".");
while (sTempStr)
{
printf("in in TempStr[%s]\n",sTempStr);
//MyLogger("write","","Temp String[%s]",sTempStr);
sTempStr = strtok(NULL,".");
}