Skip to content

Commit

Permalink
[common] reformat the debug output to be more useful
Browse files Browse the repository at this point in the history
  • Loading branch information
gnif committed Dec 7, 2023
1 parent 3668040 commit 6104956
Show file tree
Hide file tree
Showing 4 changed files with 59 additions and 21 deletions.
30 changes: 18 additions & 12 deletions common/include/common/debug.h
Original file line number Diff line number Diff line change
Expand Up @@ -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()
Expand All @@ -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 : \
Expand All @@ -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, "================================================================================")
Expand Down Expand Up @@ -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
46 changes: 39 additions & 7 deletions common/src/debug.c
Original file line number Diff line number Diff line change
Expand Up @@ -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);
}

Expand All @@ -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);
}

Expand All @@ -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);
}
2 changes: 1 addition & 1 deletion common/src/platform/linux/debug.c
Original file line number Diff line number Diff line change
Expand Up @@ -30,7 +30,7 @@

const char ** debug_lookup = NULL;

void debug_init(void)
void platform_debugInit(void)
{
static const char * colorLookup[] =
{
Expand Down
2 changes: 1 addition & 1 deletion common/src/platform/windows/debug.c
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,7 @@

const char ** debug_lookup = NULL;

void debug_init(void)
void platform_debugInit(void)
{
static const char * plainLookup[] =
{
Expand Down

0 comments on commit 6104956

Please sign in to comment.