Debug
#load "std/debug.bl"
Set of common debugging tools.
print_log
print_log :: fn (format: string_view, args: ...) #inline
Print debug log using current application_context print_log_fn
function.
File: debug.bl
print_info
print_info :: fn (format: string_view, args: ...) #inline
Print debug info using current application_context print_log_fn
function.
File: debug.bl
print_warn
print_warn :: fn (format: string_view, args: ...) #inline
Print debug warning using current application_context print_log_fn
function.
File: debug.bl
print_err
print_err :: fn {
print_err_e;
print_err_msg;
}
Print debug error using current application_context.print_log_fn function.
File: debug.bl
assert
assert :: fn (condition: bool, message :: , loc :: )
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
static_assert :: fn (expr: bool)
Assertion check evaluated in compile time.
File: debug.bl
panic
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.
Example
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
PrintLogKind :: enum u8 {
MESSAGE;
INFO;
WARNING;
ERROR;
ASSERT;
PANIC;
}
Kinds of log messages.
Variants
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
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
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.
Example
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
measure_elapsed_ms_end :: fn (name : string_view: ) f64 #inline
Pop the last start time from the runtime measurement queue and log the result time difference when the name is specified. Function return time difference between the current time and last start time.
File: debug.bl