下面是一个头文件,在写代码时,#include "debug_log.h",
然后使用 DEBUG_PRINT( "debug information: %s", "hello world" );
输出:[file: ps_push.c, func: main, line: 151 ] debug information: hello world
调试信息中包含了,代码文件名,函数名,行号,调试信息,有了这些信息可以很快定位到
代码的位置,方便检查错误。
适合调试不方便的工程,当不需要调试信息时,
只要注释掉 /* #define DEBUG_LOG_ENABLE */
就不会对生产代码有任何影响。
- // file debug_log.h
- #ifndef __DEBUG_LOG_H
- #define __DEBUG_LOG_H
- #include <stdio.h>
- #include <string.h>
- #include <stdlib.h>
- #include <stdarg.h>
- #define DEBUG_LOG_ENABLE
- #ifdef DEBUG_LOG_ENABLE
- # define DEBUG_PRINT(format,args...) \
- log_message(__FILE__, __LINE__, __FUNCTION__, format, ##args);
- #else
- # define DEBUG_PRINT(format,args...)
- #endif
- static void log_message(char* file, int line, const char* func,
- const char* format,...)
- {
- if ( format == NULL )
- return;
- int size = strlen(format) + 1024;
- char *new_format = (char *) malloc( sizeof(char) * size );
- if ( new_format == NULL )
- return;
- memset( new_format, 0x00, size);
- snprintf( new_format, size, "[file: %s, func: %s, line: %d ] %s ",
- file, func, line, format );
- va_list va;
- va_start(va, format);
- vfprintf( stderr, new_format, va );
- va_end( va );
- free( new_format );
- }
- #endif // __DEBUG_LOG_H
阅读(1966) | 评论(0) | 转发(0) |