[−][src]Crate win_dbg_logger
A logger for use with Windows debuggers.
Windows allows applications to output a string directly to debuggers. This is very useful in situations where other forms of logging are not available. For example, stderr is not available for GUI apps.
Windows provides the OutputDebugString
entry point, which allows apps to
print a debug string. Internally, OutputDebugString
is implemented by
raising an SEH exception, which the debugger catches and handles.
Raising an exception has a significant cost, when run under a debugger, because the debugger halts all threads in the target process. So you should avoid using this logger for high rates of output, because doing so will slow down your app.
Like many Windows entry points, OutputDebugString
is actually two entry
points: OutputDebugStringA
(multi-byte encodings) and
OutputDebugStringW
(UTF-16). In most cases, the *A
version is implemented
using a "thunk" which converts its arguments to UTF-16 and then calls the *W
version. However, OutputDebugStringA
is one of the few entry points where
the opposite is true.
This crate can be compiled and used on non-Windows platforms, but it does nothing. This is intended to minimize the impact on code that takes a dependency on this crate.
Structs
DebuggerLogger | This implements |
Statics
DEBUGGER_LOGGER | This is a static instance of |
Functions
init | Sets the |
is_debugger_present | Checks whether a debugger is attached to the current process. |
output_debug_string | Calls the |
rust_win_dbg_logger_init_debug | This can be called from C/C++ code to register the debug logger. |
rust_win_dbg_logger_init_error | This can be called from C/C++ code to register the debug logger. |
rust_win_dbg_logger_init_info | This can be called from C/C++ code to register the debug logger. |
rust_win_dbg_logger_init_trace | This can be called from C/C++ code to register the debug logger. |
rust_win_dbg_logger_init_warn | This can be called from C/C++ code to register the debug logger. |