Thank you, I the same code and configuration, running on your computer, run on unit computer will appear this problem, I also looked at the "optimization" problem, under my optimization in the debug is closed, What would it be and VS configuration, not the problem of the code itself? His rookie, spot bamboo ~, thank you CodePudding user response:
I also encountered this problem, could you tell me how to solve? CodePudding user response:
Sometimes not to "call a function name + each parameter value, after entering the function of each parameter values, intermediate variable values, exit the function return value of preparation, return to the function to call after the function value of the parameter name + + return value" this information to write logs to a file is where no matter how to also can not find the problem, including capture all kinds of abnormal, writing log to the screen and single step or set a breakpoint or core file is generated,... These methods are not! Write logs to a file reference below: //loop to a function sends a length of 200 bytes (this is the fixed) buffer, //a function need to incoming buffer, the circulation of 240 bytes (fixed) new buffer for processing, //when dealing with each new printing takes two bytes of the buffer # ifdef _MSC_VER # pragma warning (4996) disable: # endif #include #include #include # ifdef _MSC_VER #include #include #include # define MYVOID void # define vsnprintf _vsnprintf # the else #include #include #include # define CRITICAL_SECTION pthread_mutex_t # define MYVOID void * # endif //the Log { # define MAXLOGSIZE 20000000 # define MAXLINSIZE 16000 #include #include #include Char logfilename1 []="MyLog1. Log"; Char logfilename2 []="MyLog2. Log"; The static char logstr [MAXLINSIZE + 1]; Char datestr [16]. Char timestr [16]. Char MSS [4]. CRITICAL_SECTION cs_log; The FILE * flog; # ifdef _MSC_VER The Lock (CRITICAL_SECTION void * l) { The EnterCriticalSection (l); } Void Unlock (CRITICAL_SECTION * l) { LeaveCriticalSection (l); } Void sleep_ms (int) ms { Sleep (ms). } # the else The Lock (CRITICAL_SECTION void * l) { Pthread_mutex_lock (l); } Void Unlock (CRITICAL_SECTION * l) { Pthread_mutex_unlock (l); } Void sleep_ms (int) ms { Usleep (ms * 1000); } # endif Void LogV (const char * pszFmt, va_list argp) { * struct tm now; Struct timeb TB; If (NULL==pszFmt | | 0==pszFmt [0]) return; Vsnprintf (logstr, MAXLINSIZE pszFmt, argp); Ftime (& amp; TB); Now=localtime (& amp; TB. Time); Sprintf (datestr, "% d % % 4 d - 02-02 d", now - & gt; Tm_year + 1900, now - & gt; Tm_mon + 1, now - & gt; Tm_mday); Sprintf (timestr, "02 02 02 % d: % d: % d", now - & gt; Tm_hour, now - & gt; Tm_min, now - & gt; Tm_sec); Sprintf (MSS, "% 3 d", TB. Millitm); Printf (" % s % s. % s % s ", datestr, timestr, MSS, logstr); Flog=fopen (logfilename1, "a"); If (NULL! Flog)={ Fprintf (flog, "% s % s. % s % s", datestr, timestr, MSS, logstr); If (ftell (flog) & gt; MAXLOGSIZE) { The fclose (flog); If (rename (logfilename1 logfilename2)) { Remove (logfilename2); Rename (logfilename1 logfilename2); } } else { The fclose (flog); } } } Void the Log (const char * pszFmt,... ) { Va_list argp; The Lock (& amp; Cs_log); Va_start (argp, pszFmt); LogV (pszFmt argp); Va_end (argp); Unlock (& amp; Cs_log); } //the Log} # define ASIZE 200 # define BSIZE 240 # define CSIZE 2 Char Abuf [ASIZE]; Char Cbuf [CSIZE]; CRITICAL_SECTION cs_HEX; CRITICAL_SECTION cs_BBB; Struct FIFO_BUFFER { Int the head; Int tail; Int size; Char data [BSIZE]; } BBB; Int No_Loop=0; Void HexDump) (int cn, char * buf, int len) { int i,j,k; Char binstr [80]. The Lock (& amp; Cs_HEX); For (I=0; I If (0==16) (I %) { Sprintf (binstr, "% 3 d % 4 x -", cn, I); Sprintf (binstr, "% s % 02 x", binstr, buf (unsigned char) [I]); } else if (15==16) (I %) { Sprintf (binstr, "% s % 02 x", binstr, buf (unsigned char) [I]); Sprintf (binstr, "% s", binstr); For (j=I - 15; j<=I; J++) { Sprintf (binstr, "% s % c," binstr, ('! '& lt; Buf [j] & amp; & Buf [j] <='~')? Buf [j] : '. '); } The Log (" % s \ n ", binstr); } else { Sprintf (binstr, "% s % 02 x", binstr, buf (unsigned char) [I]); } } If (0! 16)=(I %) { 16 k=16 - (I %); for (j=0; j Sprintf (binstr, "% s", binstr); } Sprintf (binstr, "% s", binstr); K=16 - k; For (j=I - k; j Sprintf (binstr, "% s % c," binstr, ('! '& lt; Buf [j] & amp; & Buf [j] <='~')? Buf [j] : '. '); } The Log (" % s \ n ", binstr); } Unlock (& amp; Cs_HEX); } Int GetFromRBuf (int cn, CRITICAL_SECTION * cs, struct FIFO_BUFFER * fbuf, char * buf, int len) { Int lent, len1 len2; Lent=0; The Lock (cs); If (fbuf - & gt; Size> Len)={ nullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnull