diff --git a/BAN/include/BAN/Debug.h b/BAN/include/BAN/Debug.h index bb5c925..f7d7ca8 100644 --- a/BAN/include/BAN/Debug.h +++ b/BAN/include/BAN/Debug.h @@ -8,12 +8,31 @@ #include #include +#include #define __debug_putchar [](int c) { putc_unlocked(c, stddbg); } +inline uint64_t _ban_init_start_ms() +{ + timespec ts; + clock_gettime(CLOCK_MONOTONIC, &ts); + return ts.tv_sec * 1000 + ts.tv_nsec / 1000000; +} + +inline uint64_t _ban_start_ms = _ban_init_start_ms(); + +#define __print_timestamp() \ + do { \ + timespec ts; \ + clock_gettime(CLOCK_MONOTONIC, &ts); \ + const auto ms = ts.tv_sec * 1000 + ts.tv_nsec / 1000000 - _ban_start_ms; \ + BAN::Formatter::print(__debug_putchar, "[{}.{03}] ", ms / 1000, ms % 1000); \ + } while (false) + #define dprintln(...) \ do { \ flockfile(stddbg); \ + __print_timestamp(); \ BAN::Formatter::print(__debug_putchar, __VA_ARGS__); \ BAN::Formatter::print(__debug_putchar,"\n"); \ fflush(stddbg); \ @@ -24,6 +43,7 @@ do { \ flockfile(stddbg); \ BAN::Formatter::print(__debug_putchar, "\e[33m"); \ + __print_timestamp(); \ BAN::Formatter::print(__debug_putchar, __VA_ARGS__); \ BAN::Formatter::print(__debug_putchar, "\e[m\n"); \ fflush(stddbg); \ @@ -34,6 +54,7 @@ do { \ flockfile(stddbg); \ BAN::Formatter::print(__debug_putchar, "\e[31m"); \ + __print_timestamp(); \ BAN::Formatter::print(__debug_putchar, __VA_ARGS__); \ BAN::Formatter::print(__debug_putchar, "\e[m\n"); \ fflush(stddbg); \