⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 debug.c

📁 本文件介绍了unix内核的c源代码
💻 C
字号:
#include <comlib.h>#include <stdarg.h>#include <stdio.h>int PrintLog(FILE* pfile, const char * pformat, ...){	va_list _va_list;	TIMESTRU timestru;	char szBuf[MAXBUF];	int nLen;	if (pformat == NULL || pfile == NULL) return -1; 	/* 判断指针是否正确*/	timestru = GetTime();	nLen = sprintf(szBuf, " %04d.%02d.%02d %02d:%02d:%02d [%d]: ",		timestru.nYear, timestru.nMon, timestru.nDay,		timestru.nHour, timestru.nMin, timestru.nSec, getpid());			va_start(_va_list, pformat); 				/* 初始化变长参数列表 */	nLen += vsprintf(szBuf+nLen, pformat, _va_list); 	/* 传递变长参数 */	va_end(_va_list); 					/* 结束使用变长参数列表 */		nLen += sprintf(szBuf + nLen, "\n");			/* 添加换行符 */	if (fputs(szBuf, pfile) != EOF && fflush(pfile) != EOF) return 0;/*  输出并刷新文件流 */	return -2;						/* 错误返回 */}int PrintTraceLog(const char* pformat, ...){ 	va_list _va_list;	char szBuf[MAXBUF]; 	FILE *fp; 	int ret;	if (pformat == NULL) return -1; 	/* 判断指针是否正确*/		 	va_start(_va_list, pformat);		   	vsprintf(szBuf, pformat, _va_list);      	va_end(_va_list);                       	if ((fp = fopen(TRACE_FILE, "a")) != NULL) 	{ 		ret = PrintLog(fp, szBuf);	/* 写日志文件 */ 		fclose(fp);			/* 关闭日志文件 */	 	return(ret); 	} 	return -1;}int PrintHexLog(FILE* pfile, void * pData, int nSize){	char cLine[16], *pcData;	char szBuf[MAXBUF + 1];	int nPos, nLineSize, nLine, nLen, n;	if (pfile == NULL || pData == NULL) return -1;		pcData = (char*)pData;	nLine = 1;	nLen = sprintf(szBuf, "address[%08X] size[%d]\n", pData, nSize);	for (nPos = 0; nPos < nSize; nLine++)	{		nLineSize = min(nSize - nPos, 16);		/* 防止最后一行数据不足 */		memcpy(cLine, pcData + nPos, nLineSize);		nPos += nLineSize;		nLen += sprintf(szBuf + nLen, "[%02d]:  ", nLine);		for (n = 0; n < nLineSize; n++)		{			if (n == 8) nLen += sprintf(szBuf + nLen, " ");/* 第8个字节后空格 */			nLen += sprintf(szBuf + nLen, "%02X ", cLine[n] & 0x00FF);		}		for (n = nLineSize; n < 16; n++)	/* 最后一行补空格 */		{			if (n == 8) nLen += sprintf(szBuf + nLen, " ");			nLen += sprintf(szBuf + nLen, "   ");		}		nLen += sprintf(szBuf + nLen, " :");		for (n = 0; n < nLineSize; n++)		/* 以字符显示内存数据 */		{			if (!isprint(cLine[n])) cLine[n] = '.';	/* 以“.”显示非打印字符 */			nLen += sprintf(szBuf + nLen, "%c", cLine[n]);		}		nLen += sprintf(szBuf + nLen, "\n");	}	PrintLog(pfile, szBuf);	return 0;}int PrintTraceHexLog(void * pData, int nSize){ 	FILE *fp; 	int ret; 	if ((fp = fopen(TRACE_FILE, "a")) != NULL) 	{ 		ret = PrintHexLog(fp, pData, nSize);	/* 写日志文件 */ 		fclose(fp);				/* 关闭日志文件 */	 	return(ret); 	} 	return -1;}int Verify(int bStatus, const char* szBuf, const char* szFile, int nLine){	FILE *fp;	char szFileLine[128], szError[128];	if (!bStatus)	{		memset(szFileLine, 0, sizeof(szFileLine));       		memset(szError, 0, sizeof(szError));		if (errno != 0) sprintf(szError, "\t> %0.64s\n", strerror(errno));		if (szFile == NULL) strcpy(szFileLine, "\t> Invalid file name");		else sprintf(szFileLine, "\t> In line %d file %0.32s", nLine, szFile);		if (szBuf == NULL)  szBuf = "";		fp = fopen(TRACE_FILE, "a");		if (fp != NULL)		{			PrintLog(fp, "%s[%d]\n%s%s", szBuf, getpid(), szError, szFileLine);			fclose(fp);		}		errno = 0;	}	return bStatus;}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -