mirror of
https://github.com/gnif/LookingGlass.git
synced 2024-12-22 13:52:57 +00:00
[common] reformat the debug output to be more useful
This commit is contained in:
parent
3668040892
commit
6104956a27
4 changed files with 59 additions and 21 deletions
|
@ -44,6 +44,9 @@ extern const char ** debug_lookup;
|
||||||
|
|
||||||
void debug_init(void);
|
void debug_init(void);
|
||||||
|
|
||||||
|
// platform specific debug initialization
|
||||||
|
void platform_debugInit(void);
|
||||||
|
|
||||||
#ifdef ENABLE_BACKTRACE
|
#ifdef ENABLE_BACKTRACE
|
||||||
void printBacktrace(void);
|
void printBacktrace(void);
|
||||||
#define DEBUG_PRINT_BACKTRACE() printBacktrace()
|
#define DEBUG_PRINT_BACKTRACE() printBacktrace()
|
||||||
|
@ -65,6 +68,19 @@ void printBacktrace(void);
|
||||||
#define DEBUG_UNREACHABLE_MARKER()
|
#define DEBUG_UNREACHABLE_MARKER()
|
||||||
#endif
|
#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) ( \
|
#define STRIPPATH(s) ( \
|
||||||
sizeof(s) > 2 && (s)[sizeof(s)- 3] == DIRECTORY_SEPARATOR ? (s) + sizeof(s) - 2 : \
|
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 : \
|
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))
|
sizeof(s) > 21 && (s)[sizeof(s)-22] == DIRECTORY_SEPARATOR ? (s) + sizeof(s) - 21 : (s))
|
||||||
|
|
||||||
#define DEBUG_PRINT(level, fmt, ...) do { \
|
#define DEBUG_PRINT(level, fmt, ...) do { \
|
||||||
fprintf(stderr, "%s%12" PRId64 "%20s:%-4u | %-30s | " fmt "%s\n", \
|
debug_level(level, STRIPPATH(__FILE__), __LINE__, __FUNCTION__, \
|
||||||
debug_lookup[level], microtime(), STRIPPATH(__FILE__), \
|
fmt, ##__VA_ARGS__); \
|
||||||
__LINE__, __FUNCTION__, ##__VA_ARGS__, debug_lookup[DEBUG_LEVEL_NONE]); \
|
|
||||||
} while (0)
|
} while (0)
|
||||||
|
|
||||||
#define DEBUG_BREAK() DEBUG_PRINT(DEBUG_LEVEL_INFO, "================================================================================")
|
#define DEBUG_BREAK() DEBUG_PRINT(DEBUG_LEVEL_INFO, "================================================================================")
|
||||||
|
@ -124,13 +139,4 @@ void printBacktrace(void);
|
||||||
#define DEBUG_PROTO(fmt, ...) do {} while(0)
|
#define DEBUG_PROTO(fmt, ...) do {} while(0)
|
||||||
#endif
|
#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
|
#endif
|
||||||
|
|
|
@ -24,24 +24,56 @@
|
||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
#include <string.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)
|
unsigned int line, const char * function, const char * format, va_list va)
|
||||||
{
|
{
|
||||||
const char * f = strrchr(file, DIRECTORY_SEPARATOR) + 1;
|
const char * f = strrchr(file, DIRECTORY_SEPARATOR);
|
||||||
fprintf(stderr, "%s%12" PRId64 "%20s:%-4u | %-30s | ",
|
if (!f)
|
||||||
debug_lookup[level], microtime(), 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);
|
line, function);
|
||||||
|
|
||||||
vfprintf(stderr, format, va);
|
vfprintf(stderr, format, va);
|
||||||
fprintf(stderr, "%s\n", debug_lookup[DEBUG_LEVEL_NONE]);
|
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,
|
void debug_info(const char * file, unsigned int line, const char * function,
|
||||||
const char * format, ...)
|
const char * format, ...)
|
||||||
{
|
{
|
||||||
va_list va;
|
va_list va;
|
||||||
va_start(va, format);
|
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);
|
va_end(va);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -50,7 +82,7 @@ void debug_warn(const char * file, unsigned int line, const char * function,
|
||||||
{
|
{
|
||||||
va_list va;
|
va_list va;
|
||||||
va_start(va, format);
|
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);
|
va_end(va);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -59,6 +91,6 @@ void debug_error(const char * file, unsigned int line, const char * function,
|
||||||
{
|
{
|
||||||
va_list va;
|
va_list va;
|
||||||
va_start(va, format);
|
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);
|
va_end(va);
|
||||||
}
|
}
|
||||||
|
|
|
@ -30,7 +30,7 @@
|
||||||
|
|
||||||
const char ** debug_lookup = NULL;
|
const char ** debug_lookup = NULL;
|
||||||
|
|
||||||
void debug_init(void)
|
void platform_debugInit(void)
|
||||||
{
|
{
|
||||||
static const char * colorLookup[] =
|
static const char * colorLookup[] =
|
||||||
{
|
{
|
||||||
|
|
|
@ -22,7 +22,7 @@
|
||||||
|
|
||||||
const char ** debug_lookup = NULL;
|
const char ** debug_lookup = NULL;
|
||||||
|
|
||||||
void debug_init(void)
|
void platform_debugInit(void)
|
||||||
{
|
{
|
||||||
static const char * plainLookup[] =
|
static const char * plainLookup[] =
|
||||||
{
|
{
|
||||||
|
|
Loading…
Reference in a new issue