jaulib v1.4.1
Jau Support Library (C++, Java, ..)
Loading...
Searching...
No Matches
debug.hpp File Reference
#include <cstdlib>
#include <cstdint>
#include <cstring>
#include <string>
#include <cstdio>
#include <cstdarg>
#include <jau/cpp_lang_util.hpp>
#include <jau/environment.hpp>
#include <jau/backtrace.hpp>
#include <jau/string_util.hpp>
Include dependency graph for debug.hpp:
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Namespaces

namespace  jau
 __pack(...): Produces MSVC, clang and gcc compatible lead-in and -out macros.
 
namespace  jau::impl
 

Macros

#define ABORT(...)
 Use for unconditional ::abort() call with given messages, prefix '[elapsed_time] ABORT @ file:line func: '.
 
#define COND_PRINT(C, ...)
 Use for conditional plain messages, prefix '[elapsed_time] '.
 
#define DBG_ERR_PRINT(...)
 Use for environment-variable environment::DEBUG conditional error messages, prefix '[elapsed_time] Warning @ FILE:LINE FUNC: '.
 
#define DBG_JNI_PRINT(...)
 Use for environment-variable environment::DEBUG_JNI conditional debug messages, prefix '[elapsed_time] Debug: '.
 
#define DBG_PRINT(...)
 Use for environment-variable environment::DEBUG conditional debug messages, prefix '[elapsed_time] Debug: '.
 
#define DBG_WARN_PRINT(...)
 Use for environment-variable environment::DEBUG conditional warning messages, prefix '[elapsed_time] Warning @ FILE:LINE FUNC: '.
 
#define ERR_PRINT(...)
 Use for unconditional error messages, prefix '[elapsed_time] Error @ FILE:LINE FUNC: '.
 
#define ERR_PRINT2(...)
 Use for unconditional error messages, prefix '[elapsed_time] Error @ FILE:LINE FUNC: '.
 
#define IRQ_PRINT(...)
 Use for unconditional interruption messages, prefix '[elapsed_time] Interrupted @ FILE:LINE FUNC: '.
 
#define PERF2_TS_T0()
 
#define PERF2_TS_TD(m)
 
#define PERF3_TS_T0()
 
#define PERF3_TS_TD(m)
 
#define PERF_TS_T0()
 
#define PERF_TS_T0_BASE()
 
#define PERF_TS_TD(m)
 
#define PERF_TS_TD_BASE(m)
 
#define WARN_PRINT(...)
 Use for unconditional warning messages, prefix '[elapsed_time] Warning @ FILE:LINE FUNC: '.
 
#define WORDY_PRINT(...)
 Use for environment-variable environment::VERBOSE conditional verbose messages, prefix '[elapsed_time] Wordy: '.
 

Functions

void jau::impl::abortImpl (const char *func, const char *file, const int line, const char *format,...) noexcept
 Use for unconditional ::abort() call with given messages, prefix '[elapsed_time] ABORT @ file:line func: '.
 
void jau::COND_PRINT_impl (const char *format,...) noexcept
 
template<typename... Args>
void jau::dbgPrint (std::string_view format, const Args &...args)
 Use for environment-variable environment::DEBUG conditional debug messages, prefix '[elapsed_time] Debug: '.
 
void jau::impl::dbgPrint1 (const char *format,...) noexcept
 
void jau::impl::dbgPrint2 (const char *s) noexcept
 
void jau::ERR_PRINTv (const char *func, const char *file, const int line, const char *format, va_list args) noexcept
 Use for unconditional error messages, prefix '[elapsed_time] Error @ file:line func: '.
 
void jau::impl::errPrint (const char *prefix, const bool backtrace, const char *func, const char *file, const int line, const char *format,...) noexcept
 
int jau::fprintf_td (const uint64_t elapsed_ms, FILE *stream, const char *format,...) noexcept
 Convenient fprintf() invocation, prepending the given elapsed_ms timestamp.
 
int jau::fprintf_td (FILE *stream, const char *format,...) noexcept
 Convenient fprintf() invocation, prepending the environment::getElapsedMillisecond() timestamp.
 
void jau::INFO_PRINT (const char *format,...) noexcept
 Use for unconditional informal messages, prefix '[elapsed_time] Info: '.
 
void jau::PLAIN_PRINT (const bool printPrefix, const char *format,...) noexcept
 Use for unconditional plain messages, prefix '[elapsed_time] ' if printPrefix == true.
 
template<class List>
void jau::printSharedPtrList (const std::string &prefix, List &list) noexcept
 
void jau::WARN_PRINTv (const char *func, const char *file, const int line, const char *format, va_list args) noexcept
 Use for unconditional warning messages, prefix '[elapsed_time] Warning @ file:line func: '.
 
void jau::impl::warnPrint (const char *func, const char *file, const int line, const char *format,...) noexcept
 
void jau::impl::wordyPrint (const char *format,...) noexcept
 

Macro Definition Documentation

◆ ABORT

#define ABORT ( ...)
Value:
{ jau::impl::abortImpl(__func__, __FILE__, __LINE__, __VA_ARGS__); }
void abortImpl(const char *func, const char *file, const int line, const char *format,...) noexcept
Use for unconditional ::abort() call with given messages, prefix '[elapsed_time] ABORT @ file:line fu...
Definition debug.cpp:204

Use for unconditional ::abort() call with given messages, prefix '[elapsed_time] ABORT @ file:line func: '.

Function also appends last errno and strerror(errno).

Definition at line 60 of file debug.hpp.

◆ DBG_PRINT

#define DBG_PRINT ( ...)
Value:
{ if( jau::environment::get().debug ) { jau::impl::dbgPrint1(__VA_ARGS__); } }
static environment & get(const std::string &root_prefix_domain="jau") noexcept
Static singleton initialization of this project's environment with the given global root prefix_domai...
void dbgPrint1(const char *format,...) noexcept
Definition debug.cpp:184

Use for environment-variable environment::DEBUG conditional debug messages, prefix '[elapsed_time] Debug: '.

Definition at line 72 of file debug.hpp.

◆ DBG_WARN_PRINT

#define DBG_WARN_PRINT ( ...)
Value:
{ if( jau::environment::get().debug ) { jau::impl::warnPrint(__func__, __FILE__, __LINE__, __VA_ARGS__); } }
void warnPrint(const char *func, const char *file, const int line, const char *format,...) noexcept
Definition debug.cpp:244

Use for environment-variable environment::DEBUG conditional warning messages, prefix '[elapsed_time] Warning @ FILE:LINE FUNC: '.

Definition at line 75 of file debug.hpp.

◆ DBG_ERR_PRINT

#define DBG_ERR_PRINT ( ...)
Value:
{ if( jau::environment::get().debug ) { jau::impl::errPrint("Debug", true /* backtrace */, __func__, __FILE__, __LINE__, __VA_ARGS__); } }
void errPrint(const char *prefix, const bool backtrace, const char *func, const char *file, const int line, const char *format,...) noexcept
Definition debug.cpp:224

Use for environment-variable environment::DEBUG conditional error messages, prefix '[elapsed_time] Warning @ FILE:LINE FUNC: '.

Function also appends last errno, strerror(errno) and full backtrace

Definition at line 78 of file debug.hpp.

◆ DBG_JNI_PRINT

#define DBG_JNI_PRINT ( ...)
Value:
{ if( jau::environment::get().debug_jni ) { jau::impl::dbgPrint1(__VA_ARGS__); } }

Use for environment-variable environment::DEBUG_JNI conditional debug messages, prefix '[elapsed_time] Debug: '.

Definition at line 81 of file debug.hpp.

◆ WORDY_PRINT

#define WORDY_PRINT ( ...)
Value:
{ if( jau::environment::get().verbose ) { jau::impl::wordyPrint(__VA_ARGS__); } }
void wordyPrint(const char *format,...) noexcept
Definition debug.cpp:194

Use for environment-variable environment::VERBOSE conditional verbose messages, prefix '[elapsed_time] Wordy: '.

'Wordy' is the shorter English form of the Latin word 'verbosus', from which the word 'verbosity' is sourced.

Definition at line 89 of file debug.hpp.

◆ PERF_TS_T0_BASE

#define PERF_TS_T0_BASE ( )
Value:
const uint64_t _t0 = jau::getCurrentMilliseconds()
uint64_t getCurrentMilliseconds() noexcept
Returns current monotonic time in milliseconds.

Definition at line 92 of file debug.hpp.

◆ PERF_TS_TD_BASE

#define PERF_TS_TD_BASE ( m)
Value:
{ const uint64_t _td = jau::getCurrentMilliseconds() - _t0; \
fprintf(stderr, "[%s] PERF %s done in %d ms,\n", jau::to_decstring(jau::environment::getElapsedMillisecond(), ',', 9).c_str(), (m), (int)_td); }
static uint64_t getElapsedMillisecond() noexcept
Returns current elapsed monotonic time in milliseconds since module startup, see startupTimeMilliseco...
std::string to_decstring(const value_type &v, const char separator=',', const nsize_t width=0) noexcept
Produce a decimal string representation of an integral integer value.

Definition at line 94 of file debug.hpp.

◆ PERF_TS_T0

#define PERF_TS_T0 ( )

Definition at line 100 of file debug.hpp.

◆ PERF_TS_TD

#define PERF_TS_TD ( m)

Definition at line 101 of file debug.hpp.

◆ PERF2_TS_T0

#define PERF2_TS_T0 ( )

Definition at line 107 of file debug.hpp.

◆ PERF2_TS_TD

#define PERF2_TS_TD ( m)

Definition at line 108 of file debug.hpp.

◆ PERF3_TS_T0

#define PERF3_TS_T0 ( )

Definition at line 114 of file debug.hpp.

◆ PERF3_TS_TD

#define PERF3_TS_TD ( m)

Definition at line 115 of file debug.hpp.

◆ ERR_PRINT

#define ERR_PRINT ( ...)
Value:
{ jau::impl::errPrint("Error", true /* backtrace */, __func__, __FILE__, __LINE__, __VA_ARGS__); }

Use for unconditional error messages, prefix '[elapsed_time] Error @ FILE:LINE FUNC: '.

Function also appends last errno, strerror(errno) and full backtrace

Definition at line 122 of file debug.hpp.

◆ ERR_PRINT2

#define ERR_PRINT2 ( ...)
Value:
{ jau::impl::errPrint("Error", false /* backtrace */, __func__, __FILE__, __LINE__, __VA_ARGS__); }

Use for unconditional error messages, prefix '[elapsed_time] Error @ FILE:LINE FUNC: '.

Function also appends last errno and strerror(errno). No backtrace.

Definition at line 125 of file debug.hpp.

◆ IRQ_PRINT

#define IRQ_PRINT ( ...)
Value:
{ jau::impl::errPrint("Interrupted", false /* backtrace */, __func__, __FILE__, __LINE__, __VA_ARGS__); }

Use for unconditional interruption messages, prefix '[elapsed_time] Interrupted @ FILE:LINE FUNC: '.

Function also appends last errno and strerror(errno).

Definition at line 128 of file debug.hpp.

◆ WARN_PRINT

#define WARN_PRINT ( ...)
Value:
{ jau::impl::warnPrint(__func__, __FILE__, __LINE__, __VA_ARGS__); }

Use for unconditional warning messages, prefix '[elapsed_time] Warning @ FILE:LINE FUNC: '.

Definition at line 134 of file debug.hpp.

◆ COND_PRINT

#define COND_PRINT ( C,
... )
Value:
{ if( C ) { jau::COND_PRINT_impl(__VA_ARGS__); } }
void COND_PRINT_impl(const char *format,...) noexcept
Definition debug.cpp:293

Use for conditional plain messages, prefix '[elapsed_time] '.

Definition at line 162 of file debug.hpp.