亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? trace.cpp

?? 自己寫的是用于所有VC開發平臺和linux平臺軟件開發的trace功能函數。可自定module,evel, 系統時間開關
?? CPP
字號:
#include <stdio.h>
#include <time.h>
#include <string.h>
#include <stdarg.h>

#include "trace.h"

#define MAX_TRACESTR  2048

#ifdef _WIN32 
	#if (_MSC_VER < 1500)
		#define vsnprintf _vsnprintf
	#endif 
#endif

unsigned long DEBUG_FLAGS = TRACE_LEVEL_ERROR_OPEN    |
							TRACE_LEVEL_RETURN_OPEN   |
                            TRACE_LEVEL_INFO_OPEN     |
							TRACE_LEVEL_PARAM_OPEN    |
                            TRACE_LEVEL_ENTER_OPEN    |
                            TRACE_LEVEL_DEBUG_OPEN[0] |
                            TRACE_LEVEL_DEBUG_OPEN[1] |
							TRACE_LEVEL_DEBUG_OPEN[2] |
							TRACE_LEVEL_DEBUG_OPEN[3] |
							TRACE_LEVEL_DEBUG_OPEN[4] |
							TRACE_LEVEL_DEBUG_OPEN[5] |
							TRACE_LEVEL_DEBUG_OPEN[6] |
							TRACE_LEVEL_DEBUG_OPEN[7] |
							TRACE_LEVEL_DEBUG_OPEN[8] ;
/*
unsigned long TRACE_TO_FILE_MODE = TRACE_TO_FILE_ENTER_OPEN   |
								   TRACE_TO_FILE_RETURN_OPEN  |
								   TRACE_TO_FILE_PARAM_OPEN   |
								   TRACE_TO_FILE_INFO_OPEN	  |
								   TRACE_TO_FILE_ERROR_OPEN   |
								   TRACE_TO_FILE_DEBUG_OPEN[0]|
								   TRACE_TO_FILE_DEBUG_OPEN[1]|
								   TRACE_TO_FILE_DEBUG_OPEN[2]|
								   TRACE_TO_FILE_DEBUG_OPEN[3]|
								   TRACE_TO_FILE_DEBUG_OPEN[4]|
								   TRACE_TO_FILE_DEBUG_OPEN[5]|
								   TRACE_TO_FILE_DEBUG_OPEN[6]|
								   TRACE_TO_FILE_DEBUG_OPEN[7]|
								   TRACE_TO_FILE_DEBUG_OPEN[8];
*/
unsigned long TRACE_TO_FILE_MODE = 0;

unsigned long SYSTEM_TIME_ON = 0;

static int fileCounter = 1;
static char logFileName[12] = "";
static char traceHeaderStr[64] = "";

static char* funcName = NULL;
static char* fileName = NULL;
static int lineNumber = -1;
/*---------------------------------------------------------------------------------*/
/**
 * setTraceLevel
 * The function configurates the trace levels which to be used
 *
 * @param traceLevelFlags   specifies the trace levels
 * @return                  none
 */
void setTraceLevel(unsigned long traceLevelFlags)
{
	DEBUG_FLAGS = traceLevelFlags;
	return;
}

/*---------------------------------------------------------------------------------*/
/**
 * setTraceOutputMode
 * The function configurates which trace level's trace log to be store into file
 *
 * @param traceOutputMode   specifies the trace level flags
 * @return                  none
 */
void setTraceOutputMode(unsigned long traceOutputMode)
{
	TRACE_TO_FILE_MODE = traceOutputMode;
	return;
}

void setSystemTimeOn(unsigned long isSystemTimeOn)
{
	SYSTEM_TIME_ON = isSystemTimeOn;
	return;
}

/*---------------------------------------------------------------------------------*/
/**
 * setTraceLevelAndOutputMode
 * The function configurates trace related options
 *
 * @param traceOutputMode   specifies the trace level flags
 * @param traceLevelFlags   specifies the trace levels
 * @param isSystemTimeOn    whether open timer record in the trace. Open:1 Close:0
 * @return                  none
 */
void initTraceCfg(unsigned long traceOutputMode,unsigned long traceLevelFlags,unsigned long isSystemTimeOn)
{
	setTraceLevel(traceLevelFlags);
	setTraceOutputMode(traceOutputMode);
    setSystemTimeOn(isSystemTimeOn);
	return;
}

/*---------------------------------------------------------------------------------*/
/**
 * getSysTime
 * The function gets the current system time.
 *
 * @param systemTimeBuffer  the buffer is used to store the system time
 * @return                  none
 */
void getSysTime(char systemTimeBuffer[MAX_SYSTEM_TIME_BUF_LENGTH])
{
	struct tm *newtime;
    char am_pm[] = "AM";
	time_t now;
    time(&now);                       
	// Convert to local time.											 
    newtime = localtime(&now);
    if(newtime->tm_hour > 12)        
	strcpy(am_pm,"PM");
	// Convert from 24-hour to 12-hour clock.
	if(newtime->tm_hour > 12)        
	newtime->tm_hour -= 12;
	// Set hour to 12 if midnight.
	if(newtime->tm_hour == 0)       
	newtime->tm_hour = 12;
	sprintf(systemTimeBuffer,"%.19s %s", asctime(newtime), am_pm);
	return;
}

/*---------------------------------------------------------------------------------*/
/**
 * LogOutput
 * The function output the trace log into a file named Trace.log.
 *
 * @param logStr  the string pointer is used to store the system time
 * @return                  none
 */
void LogOutput(char* logStr)
{
	FILE *pFile;
	unsigned long nFileLen = 0;
	
	sprintf(logFileName,"Trace%d.log",fileCounter);

	pFile = fopen (logFileName,"a+");
	fseek(pFile,0,SEEK_END);  
	nFileLen = ftell(pFile);
	if(10000 <= nFileLen)
	{
		fileCounter++;
		fclose(pFile);
		sprintf(logFileName,"Trace%d.log",fileCounter);
		pFile = fopen (logFileName,"a+");
	}
	fputs ((const char*)logStr,pFile);
    fclose(pFile);
}

char* getFuncName(char name[])
{
	funcName = name;
	return funcName;
}

int getLineNumber(int line)
{
	lineNumber = line;
	return lineNumber;
}

char* getFileName(char name[])
{
	char* tmpStr = name;
	int flag = 1;

	while(NULL != strchr(tmpStr,'\\'))
	{
		tmpStr = strchr(tmpStr,'\\');
		tmpStr++;
	}

	while(NULL != strchr(tmpStr,'/'))
	{
		tmpStr = strchr(tmpStr,'/');
		tmpStr++;
	}

	fileName = tmpStr;

	return fileName;
}

bool _Enter(const char*format,...)
{
  char systemTimeBuffer[MAX_SYSTEM_TIME_BUF_LENGTH] = ""; 
  char logStr[MAX_LOG_STR_LENGTH] = "";

  char str[MAX_TRACESTR];
  va_list ap;

  va_start(ap, format);
  
  if (DEBUG_FLAGS)
  {
    vsnprintf(str, MAX_TRACESTR, format, ap);
  }
  else
  {
    *str = '\x0';
  }
  va_end(ap);

  if (DEBUG_FLAGS & TRACE_LEVEL_ENTER_OPEN)
  {
      if(SYSTEM_TIME_ON)
	  {
		 getSysTime(systemTimeBuffer);
		 sprintf(traceHeaderStr,"[%s]::",systemTimeBuffer);
	  }
      else
	  {
		//memset(traceHeaderStr,0,sizeof(traceHeaderStr));
		  traceHeaderStr[0]='\0';
	  }
	  printf("%s%s::%s@%d::ENTER:%s\n", traceHeaderStr,fileName,funcName,lineNumber,str);
	  if (TRACE_TO_FILE_MODE & TRACE_TO_FILE_ENTER_OPEN)
	  {
		  sprintf(logStr,"%s%s::%s@%d::ENTER:%s\n", traceHeaderStr,fileName,funcName,lineNumber,str);
		LogOutput(logStr);		
	  }
	  return true;
  }
  
  return false;
}

bool _Return(const char*format,...)
{
  char systemTimeBuffer[MAX_SYSTEM_TIME_BUF_LENGTH] = ""; 
  char logStr[MAX_LOG_STR_LENGTH] = "";

  char str[MAX_TRACESTR];
  va_list ap;

  va_start(ap, format);
  
  if (DEBUG_FLAGS)
  {
    vsnprintf(str, MAX_TRACESTR, format, ap);
  }
  else
  {
    *str = '\x0';
  }
  va_end(ap);

  if (DEBUG_FLAGS & TRACE_LEVEL_RETURN_OPEN)
  {
	  if(SYSTEM_TIME_ON)
	  {
		 getSysTime(systemTimeBuffer);
		 sprintf(traceHeaderStr,"[%s]::",systemTimeBuffer);
	  }
      else
	  {
		//memset(traceHeaderStr,0,sizeof(traceHeaderStr));	
	      traceHeaderStr[0]='\0';
	  }
	  printf("%s%s::%s@%d::RETURN:%s\n",traceHeaderStr,fileName,funcName,lineNumber,str);
	  if (TRACE_TO_FILE_MODE & TRACE_TO_FILE_RETURN_OPEN)
	  {
		  sprintf(logStr,"%s%s::%s@%d::RETURN:%s\n",traceHeaderStr,fileName,funcName,lineNumber,str);
		  LogOutput(logStr);
	  }
	  return true;
  }
  return false;
}

bool _Param(const char*format,...)
{
  char systemTimeBuffer[MAX_SYSTEM_TIME_BUF_LENGTH] = ""; 
  char logStr[MAX_LOG_STR_LENGTH] = "";

  char str[MAX_TRACESTR];
  va_list ap;

  va_start(ap, format);
  
  if (DEBUG_FLAGS)
  {
    vsnprintf(str, MAX_TRACESTR, format, ap);
  }
  else
  {
    *str = '\x0';
  }
  va_end(ap);

  if (DEBUG_FLAGS & TRACE_LEVEL_PARAM_OPEN)
  {
	  if(SYSTEM_TIME_ON)
	  {
		 getSysTime(systemTimeBuffer);
		 sprintf(traceHeaderStr,"[%s]::",systemTimeBuffer);
	  }
      else
	  {
		//memset(traceHeaderStr,0,sizeof(traceHeaderStr));
		  traceHeaderStr[0]='\0';
	  }
	  printf("%s%s::%s@%d::PARAM:%s\n",traceHeaderStr,fileName,funcName,lineNumber,str);
	  if (TRACE_TO_FILE_MODE & TRACE_TO_FILE_PARAM_OPEN)
	  {
		  sprintf(logStr,"%s%s::%s@%d::PARAM:%s\n",traceHeaderStr,fileName,funcName,lineNumber,str);
		  LogOutput(logStr);
	  }
	  return true;
  }
  
  return false;
}

bool _Info(const char*format,...)
{
  char systemTimeBuffer[MAX_SYSTEM_TIME_BUF_LENGTH] = ""; 
  char logStr[MAX_LOG_STR_LENGTH] = "";

  char str[MAX_TRACESTR];
  va_list ap;

  va_start(ap, format);
  
  if (DEBUG_FLAGS)
  {
    vsnprintf(str, MAX_TRACESTR, format, ap);
  }
  else
  {
    *str = '\x0';
  }
  va_end(ap);

  if (DEBUG_FLAGS & TRACE_LEVEL_INFO_OPEN)
  {
	  if(SYSTEM_TIME_ON)
	  {
		 getSysTime(systemTimeBuffer);
		 sprintf(traceHeaderStr,"[%s]::",systemTimeBuffer);
	  }
      else
	  {
		//memset(traceHeaderStr,0,sizeof(traceHeaderStr));	
		  traceHeaderStr[0]='\0';
	  }
	  printf("%s%s::%s@%d::INFO:%s\n",traceHeaderStr,fileName,funcName,lineNumber,str);
	  if (TRACE_TO_FILE_MODE & TRACE_TO_FILE_INFO_OPEN)
	  {
		  sprintf(logStr,"%s%s::%s@%d::INFO:%s\n",traceHeaderStr,fileName,funcName,lineNumber,str);
		  LogOutput(logStr);
	  }
	  return true;
  }
  
  return false;
}

bool _Debug(int level,const char* format,...)
{
  char systemTimeBuffer[MAX_SYSTEM_TIME_BUF_LENGTH] = ""; 
  char logStr[MAX_LOG_STR_LENGTH] = "";

  char str[MAX_TRACESTR];
  va_list ap;

  va_start(ap, format);
  
  if (DEBUG_FLAGS)
  {
    vsnprintf(str, MAX_TRACESTR, format, ap);
  }
  else
  {
    *str = '\x0';
  }
  va_end(ap);

  if (level < 1 || level > 9)
      return false;

  if (DEBUG_FLAGS & TRACE_LEVEL_DEBUG_OPEN[level-1])
  {
	  if(SYSTEM_TIME_ON)
	  {
		 getSysTime(systemTimeBuffer);
		 sprintf(traceHeaderStr,"[%s]::",systemTimeBuffer);
	  }
      else
	  {
		//memset(traceHeaderStr,0,sizeof(traceHeaderStr));
		  traceHeaderStr[0]='\0';
	  }
	  printf("%s%s::%s@%d::DEBUG %d:%s\n",traceHeaderStr,fileName,funcName,lineNumber,level,str);
	  if (TRACE_TO_FILE_MODE & TRACE_TO_FILE_DEBUG_OPEN[level-1])
	  {
		  sprintf(logStr,"%s%s::%s@%d::DEBUG %d:%s\n",traceHeaderStr,fileName,funcName,lineNumber,level,str);
		  LogOutput(logStr);
	  }

	  return true;
  }

  return false;
}

bool _Error(const char*format,...)
{
  char systemTimeBuffer[MAX_SYSTEM_TIME_BUF_LENGTH] = ""; 
  char logStr[MAX_LOG_STR_LENGTH] = "";

  char str[MAX_TRACESTR];
  va_list ap;

  va_start(ap, format);
  
  if (DEBUG_FLAGS)
  {
    vsnprintf(str, MAX_TRACESTR, format, ap);
  }
  else
  {
    *str = '\x0';
  }
  va_end(ap);

  if (DEBUG_FLAGS & TRACE_LEVEL_ERROR_OPEN)
  {
	  if(SYSTEM_TIME_ON)
	  {
		 getSysTime(systemTimeBuffer);
		 sprintf(traceHeaderStr,"[%s]::",systemTimeBuffer);
	  }
      else
	  {
		//memset(traceHeaderStr,0,sizeof(traceHeaderStr));
		  traceHeaderStr[0]='\0';
	  }
	  printf("%s%s::%s@%d::ERROR:%s\n",traceHeaderStr,fileName,funcName,lineNumber,str);
	  if (TRACE_TO_FILE_MODE & TRACE_TO_FILE_ERROR_OPEN)
	  {
		  sprintf(logStr,"%s%s::%s@%d::ERROR:%s\n",traceHeaderStr,fileName,funcName,lineNumber,str);
		  LogOutput(logStr);
	  }
	  return true;
  }
  
  return false;
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
久久久www成人免费无遮挡大片| 91精品国产91综合久久蜜臀| 日韩限制级电影在线观看| 中文字幕欧美一| 激情图片小说一区| 欧美电影影音先锋| 亚洲精品成a人| 国产成人在线电影| 精品久久一区二区| 午夜精品久久久久久久久久久| 97aⅴ精品视频一二三区| 久久久久免费观看| 男人的天堂久久精品| 欧洲生活片亚洲生活在线观看| 欧美经典三级视频一区二区三区| 久久精品国产一区二区三区免费看| 欧洲av一区二区嗯嗯嗯啊| 国产免费成人在线视频| 狠狠狠色丁香婷婷综合激情| 91麻豆精品91久久久久同性| 亚洲制服丝袜一区| 91在线一区二区三区| 国产精品麻豆视频| 国产一区二区三区免费在线观看| 欧美一三区三区四区免费在线看| 亚洲成av人片在线| 欧美性一二三区| 亚洲综合色区另类av| 国产成人h网站| 91精品国产综合久久国产大片 | 99久久精品久久久久久清纯| 久久综合给合久久狠狠狠97色69| 日韩激情av在线| 91精品免费观看| 日日夜夜精品免费视频| 欧美日韩国产高清一区二区三区| 亚洲精品伦理在线| 一本色道亚洲精品aⅴ| 综合久久综合久久| va亚洲va日韩不卡在线观看| 国产精品福利影院| 成人动漫中文字幕| 国产精品美女久久久久久| 成人av在线观| 中文字幕日韩一区| 一本大道久久精品懂色aⅴ| 亚洲精品福利视频网站| 欧美在线观看一区| 午夜精品福利在线| 日韩一区二区在线看片| 乱中年女人伦av一区二区| 精品欧美一区二区在线观看| 欧美日韩国产小视频| 亚洲与欧洲av电影| 欧美性受xxxx黑人xyx性爽| 天天av天天翘天天综合网| 5月丁香婷婷综合| 裸体一区二区三区| 2欧美一区二区三区在线观看视频| 激情图区综合网| 国产精品视频九色porn| 91丨porny丨户外露出| 一区二区视频在线| 欧美精品一二三| 精品在线观看免费| 国产精品久久一级| 91高清视频免费看| 日韩激情在线观看| 久久精品人人做人人爽人人| 成人午夜精品一区二区三区| 亚洲视频免费在线观看| 欧美网站大全在线观看| 蜜桃一区二区三区在线观看| 久久久久久毛片| 91日韩精品一区| 日韩精品国产欧美| 日韩女优av电影| 丁香婷婷综合色啪| 亚洲一区二区欧美激情| 精品久久久久一区二区国产| 成人午夜免费av| 亚洲a一区二区| 久久亚洲二区三区| 色综合天天综合色综合av| 日韩国产精品久久久久久亚洲| 久久久亚洲高清| 在线观看视频一区二区欧美日韩| 蜜臂av日日欢夜夜爽一区| 中文字幕二三区不卡| 欧美曰成人黄网| 久久99国内精品| 亚洲欧美日韩一区二区| 精品国产91洋老外米糕| 色婷婷激情综合| 狠狠色2019综合网| 亚洲一级二级三级在线免费观看| 精品国产a毛片| 欧美色区777第一页| 国产精品白丝jk黑袜喷水| 亚洲一区二区视频在线观看| 国产亚洲女人久久久久毛片| 在线视频国内自拍亚洲视频| 狠狠色丁香婷综合久久| 亚洲一区二区三区四区五区黄| 国产三级精品三级| 91麻豆精品国产综合久久久久久| 成人午夜电影小说| 奇米在线7777在线精品| 亚洲免费av网站| 久久网站最新地址| 欧美日韩在线播放一区| 成人精品国产一区二区4080| 麻豆成人91精品二区三区| 亚洲欧美日韩综合aⅴ视频| 欧美精品一区二区三区视频| 欧美三级在线视频| 99久精品国产| 久久综合资源网| 欧美三区免费完整视频在线观看| 成人免费三级在线| 韩国女主播一区| 日本人妖一区二区| 亚洲成人av在线电影| 亚洲精品日韩综合观看成人91| 久久精品人人爽人人爽| 欧美mv和日韩mv国产网站| 欧美日韩精品二区第二页| 91同城在线观看| 成人黄色免费短视频| 国产成人亚洲综合a∨婷婷| 美女在线观看视频一区二区| 亚洲第一成人在线| 一区二区三区日韩精品视频| 国产精品日日摸夜夜摸av| 2023国产精华国产精品| 欧美一区二区久久| 欧美精品自拍偷拍| 欧美图区在线视频| 91精彩视频在线| 91亚洲精品久久久蜜桃| 9久草视频在线视频精品| 国产成a人亚洲精| 国产一区二区三区四区五区美女| 久久99精品视频| 麻豆成人综合网| 久久国产成人午夜av影院| 琪琪久久久久日韩精品| 日韩精品一级中文字幕精品视频免费观看 | 在线播放一区二区三区| 欧美日韩中文精品| 在线观看视频一区| 欧美在线观看一区二区| 精品视频全国免费看| 欧美性猛交xxxx乱大交退制版| 色av成人天堂桃色av| 欧美一a一片一级一片| 91国产免费观看| 欧美午夜精品免费| 欧美日韩在线电影| 4438x成人网最大色成网站| 91精品一区二区三区在线观看| 欧美日韩国产综合一区二区| 欧美精品一二三区| 欧美一区二区三区喷汁尤物| 日韩一区二区电影网| 精品国产凹凸成av人网站| 久久久国际精品| 国产精品久久久久久久久免费樱桃| 国产精品进线69影院| 亚洲免费在线观看| 亚洲一区免费视频| 秋霞av亚洲一区二区三| 狂野欧美性猛交blacked| 国产伦精品一区二区三区在线观看| 高清不卡在线观看av| 91美女视频网站| 欧美日韩国产高清一区二区三区 | 精品国产成人系列| 国产精品视频九色porn| 一区二区理论电影在线观看| 婷婷开心久久网| 日韩一级二级三级精品视频| 精品国产一区二区三区不卡 | 日韩毛片在线免费观看| 一区二区三区四区视频精品免费| 亚洲成人资源在线| 开心九九激情九九欧美日韩精美视频电影 | 亚洲精品在线观看视频| 国产午夜精品一区二区| 亚洲视频免费在线观看| 日本女优在线视频一区二区| 国产精品18久久久久久久久| 一本色道a无线码一区v| 777奇米成人网| 国产网红主播福利一区二区| 亚洲精品伦理在线| 久久成人免费电影| 99精品国产热久久91蜜凸| 制服丝袜亚洲播放| 国产欧美日韩另类一区|