문제

나는이 매우 이상한 행동이 다가오고 있습니다.

아래 코드에서 : MyLogger에 전화를 댓글을 달면 Stempnr을 토큰 화하고 4 개의 토큰이 인쇄되는 모든 것이 잘 작동합니다. 그러나 내가 로깅을 위해 MyLogger로 전화를 걸면 반복 만 한 번만 발생하고 아래와 비슷한 코드를 가진 다른 테스트 클래스에서는 MyLogger에 중복 정보가 전송되는 4 번 이상의 루핑이 발생합니다.

그래서 MyLogger에 메모리 문제가 있는지 확인하기 위해 Purify 도구를 확인했습니다. 아무것도 찾을 수 없었습니다. 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,".");
}
도움이 되었습니까?

해결책

strtok() 아마도 일부 정적 데이터를 내부에 보관할 수 있습니다 MyLogger 전화 strtok(), 직간접 적으로.

바꾸다 strtok() ~와 함께 strtok_r() (재진입 버전 strtok())이 문제를 해결하기 위해.

다른 팁

로거는 Strtok에게 전화합니까?

MyLogger는 Strtok도 사용하고 있습니까? Strtok은 상태가 아닙니다.

mylogger가 stempstr에서 문자열을 손상시키는 것처럼 들립니다. MyLogger 호출 후 다시 인쇄 해보십시오. 예를 들어

 printf("in in TempStr[%s]\n",sTempStr);
 MyLogger("write","","Temp String[%s]",sTempStr);
 printf("in in TempStr[%s]\n",sTempStr);

그리고 어떤 것이 바뀌 었는지 확인하십시오

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top