#load "std/debug.bl"
Set of common debugging tools.
print_log :: fn (format: string_view, args: ...) #inline
Print debug log using current application_context print_log_fn
function.
File: debug.bl
print_info :: fn (format: string_view, args: ...) #inline
Print debug info using current application_context print_log_fn
function.
File: debug.bl
print_warn :: fn (format: string_view, args: ...) #inline
Print debug warning using current application_context print_log_fn
function.
File: debug.bl
print_err :: fn {
print_err_e;
print_err_msg;
}
Print debug error using current application_context.print_log_fn function.
File: debug.bl
assert :: fn (condition: bool, message :: "", loc :: #call_location)
Invoke assert handler from the application context in case the condition
is false
.
Important: All calls to the assert function are removed from release builds by default.
Warning: There is no argument validation in case the assert call is removed from compilation.
File: debug.bl
static_assert :: fn (expr: bool)
Assertion check evaluated in compile time.
File: debug.bl
panic :: fn {
panic_empty;
panic_error;
panic_msg;
}
Abort execution and eventually print panic message if there is one specified. First passed argument in 'args' will act like format string and can be eventually followed by any additional values required.
panic(); // abort without any messages
panic(error); // abort with [Error](#error).
panic("oops!"); // abort with message printed out.
panic("Failed with error: %", errn); // first argument passed acts like formatting string
File: debug.bl
PrintLogKind :: enum u8 {
MESSAGE;
INFO;
WARNING;
ERROR;
ASSERT;
PANIC;
}
Kinds of log messages.
MESSAGE
- Debug log message.INFO
- Informative log message.WARNING
- Warning log message.ERROR
- Error log message.ASSERT
- Assert log message.PANIC
- Panic log message.File: debug.bl
print_backtrace :: fn (skip_frames :: 0) #inline
Print current stack trace into stdout. Does nothing in release modes (stack trace information is available only when the debug info is in place).
File: debug.bl
measure_elapsed_ms_begin :: fn () #inline
Start measure elapsed milliseconds in the current scope. This function call will push the current time into the thread-local queue. Measurement must be ended by measure_elapsed_ms_end call.
measure_elapsed_ms_begin();
defer measure_elapsed_ms_end("Name");
Warning:
Every measure_elapsed_ms_begin
must have corresponding
measure_elapsed_ms_end call.
File: debug.bl
measure_elapsed_ms_end :: fn (_name : string_view: "", loc :: #call_location) f64 #inline
Pop the last start time from the runtime measurement queue and log the result time difference when the name is not '-'. The name may be empty, in such case parent function name is used implicitly for debug log.
Returns time difference between the current time and last start time.
File: debug.bl