mirror of
				https://github.com/gnif/LookingGlass.git
				synced 2025-10-31 04:31:57 +00:00 
			
		
		
		
	[common] reformat the debug output to be more useful
This commit is contained in:
		| @@ -44,6 +44,9 @@ extern const char ** debug_lookup; | ||||
|  | ||||
| void debug_init(void); | ||||
|  | ||||
| // platform specific debug initialization | ||||
| void platform_debugInit(void); | ||||
|  | ||||
| #ifdef ENABLE_BACKTRACE | ||||
| void printBacktrace(void); | ||||
| #define DEBUG_PRINT_BACKTRACE() printBacktrace() | ||||
| @@ -65,6 +68,19 @@ void printBacktrace(void); | ||||
|   #define DEBUG_UNREACHABLE_MARKER() | ||||
| #endif | ||||
|  | ||||
| void debug_level(enum DebugLevel level, const char * file, unsigned int line, | ||||
|     const char * function, const char * format, ...) | ||||
|   __attribute__((format (printf, 5, 6))); | ||||
|  | ||||
| void debug_info(const char * file, unsigned int line, const char * function, | ||||
|     const char * format, ...) __attribute__((format (printf, 4, 5))); | ||||
|  | ||||
| void debug_warn(const char * file, unsigned int line, const char * function, | ||||
|     const char * format, ...) __attribute__((format (printf, 4, 5))); | ||||
|  | ||||
| void debug_error(const char * file, unsigned int line, const char * function, | ||||
|     const char * format, ...) __attribute__((format (printf, 4, 5))); | ||||
|  | ||||
| #define STRIPPATH(s) ( \ | ||||
|   sizeof(s) >  2 && (s)[sizeof(s)- 3] == DIRECTORY_SEPARATOR ? (s) + sizeof(s) -  2 : \ | ||||
|   sizeof(s) >  3 && (s)[sizeof(s)- 4] == DIRECTORY_SEPARATOR ? (s) + sizeof(s) -  3 : \ | ||||
| @@ -88,9 +104,8 @@ void printBacktrace(void); | ||||
|   sizeof(s) > 21 && (s)[sizeof(s)-22] == DIRECTORY_SEPARATOR ? (s) + sizeof(s) - 21 : (s)) | ||||
|  | ||||
| #define DEBUG_PRINT(level, fmt, ...) do { \ | ||||
|   fprintf(stderr, "%s%12" PRId64 "%20s:%-4u | %-30s | " fmt "%s\n", \ | ||||
|       debug_lookup[level], microtime(), STRIPPATH(__FILE__), \ | ||||
|       __LINE__, __FUNCTION__, ##__VA_ARGS__, debug_lookup[DEBUG_LEVEL_NONE]); \ | ||||
|   debug_level(level, STRIPPATH(__FILE__), __LINE__, __FUNCTION__, \ | ||||
|       fmt, ##__VA_ARGS__); \ | ||||
| } while (0) | ||||
|  | ||||
| #define DEBUG_BREAK() DEBUG_PRINT(DEBUG_LEVEL_INFO, "================================================================================") | ||||
| @@ -124,13 +139,4 @@ void printBacktrace(void); | ||||
|   #define DEBUG_PROTO(fmt, ...) do {} while(0) | ||||
| #endif | ||||
|  | ||||
| void debug_info(const char * file, unsigned int line, const char * function, | ||||
|     const char * format, ...) __attribute__((format (printf, 4, 5))); | ||||
|  | ||||
| void debug_warn(const char * file, unsigned int line, const char * function, | ||||
|     const char * format, ...) __attribute__((format (printf, 4, 5))); | ||||
|  | ||||
| void debug_error(const char * file, unsigned int line, const char * function, | ||||
|     const char * format, ...) __attribute__((format (printf, 4, 5))); | ||||
|  | ||||
| #endif | ||||
|   | ||||
| @@ -24,24 +24,56 @@ | ||||
| #include <stdio.h> | ||||
| #include <string.h> | ||||
|  | ||||
| inline static void debug_level(enum DebugLevel level, const char * file, | ||||
| static uint64_t startTime; | ||||
|  | ||||
| void debug_init() | ||||
| { | ||||
|   startTime = microtime(); | ||||
|   platform_debugInit(); | ||||
| } | ||||
|  | ||||
| inline static void debug_levelVA(enum DebugLevel level, const char * file, | ||||
|     unsigned int line, const char * function, const char * format, va_list va) | ||||
| { | ||||
|   const char * f = strrchr(file, DIRECTORY_SEPARATOR) + 1; | ||||
|   fprintf(stderr, "%s%12" PRId64 "%20s:%-4u | %-30s | ", | ||||
|       debug_lookup[level], microtime(), f, | ||||
|   const char * f = strrchr(file, DIRECTORY_SEPARATOR); | ||||
|   if (!f) | ||||
|     f = file; | ||||
|   else | ||||
|     ++f; | ||||
|  | ||||
|   uint64_t elapsed = microtime() - startTime; | ||||
|   uint64_t sec     = elapsed / 1000000UL; | ||||
|   uint64_t us      = elapsed % 1000000UL; | ||||
|  | ||||
|   fprintf(stderr, "%02lu:%02lu:%02lu.%03lu %s %18s:%-4u | %-30s | ", | ||||
|       sec / 60 / 60, | ||||
|       sec / 60 % 60, | ||||
|       sec % 60, | ||||
|       us / 1000, | ||||
|       debug_lookup[level], | ||||
|       f, | ||||
|       line, function); | ||||
|  | ||||
|   vfprintf(stderr, format, va); | ||||
|   fprintf(stderr, "%s\n", debug_lookup[DEBUG_LEVEL_NONE]); | ||||
| } | ||||
|  | ||||
|  | ||||
| void debug_level(enum DebugLevel level, const char * file, unsigned int line, | ||||
|     const char * function, const char * format, ...) | ||||
| { | ||||
|   va_list va; | ||||
|   va_start(va, format); | ||||
|   debug_levelVA(level, file, line, function, format, va); | ||||
|   va_end(va); | ||||
| } | ||||
|  | ||||
| void debug_info(const char * file, unsigned int line, const char * function, | ||||
|     const char * format, ...) | ||||
| { | ||||
|   va_list va; | ||||
|   va_start(va, format); | ||||
|   debug_level(DEBUG_LEVEL_INFO, file, line, function, format, va); | ||||
|   debug_levelVA(DEBUG_LEVEL_INFO, file, line, function, format, va); | ||||
|   va_end(va); | ||||
| } | ||||
|  | ||||
| @@ -50,7 +82,7 @@ void debug_warn(const char * file, unsigned int line, const char * function, | ||||
| { | ||||
|   va_list va; | ||||
|   va_start(va, format); | ||||
|   debug_level(DEBUG_LEVEL_WARN, file, line, function, format, va); | ||||
|   debug_levelVA(DEBUG_LEVEL_WARN, file, line, function, format, va); | ||||
|   va_end(va); | ||||
| } | ||||
|  | ||||
| @@ -59,6 +91,6 @@ void debug_error(const char * file, unsigned int line, const char * function, | ||||
| { | ||||
|   va_list va; | ||||
|   va_start(va, format); | ||||
|   debug_level(DEBUG_LEVEL_ERROR, file, line, function, format, va); | ||||
|   debug_levelVA(DEBUG_LEVEL_ERROR, file, line, function, format, va); | ||||
|   va_end(va); | ||||
| } | ||||
|   | ||||
| @@ -30,7 +30,7 @@ | ||||
|  | ||||
| const char ** debug_lookup = NULL; | ||||
|  | ||||
| void debug_init(void) | ||||
| void platform_debugInit(void) | ||||
| { | ||||
|   static const char * colorLookup[] = | ||||
|   { | ||||
|   | ||||
| @@ -22,7 +22,7 @@ | ||||
|  | ||||
| const char ** debug_lookup = NULL; | ||||
|  | ||||
| void debug_init(void) | ||||
| void platform_debugInit(void) | ||||
| { | ||||
|   static const char * plainLookup[] = | ||||
|   { | ||||
|   | ||||
		Reference in New Issue
	
	Block a user
	 Geoffrey McRae
					Geoffrey McRae