#win #dbg #logger #logging #windows


A logger for use with Windows debuggers

1 unstable release

0.1.0 Apr 2, 2020
Download history 43/week @ 2022-08-14 34/week @ 2022-08-21 22/week @ 2022-08-28 47/week @ 2022-09-04 219/week @ 2022-09-11 218/week @ 2022-09-18 53/week @ 2022-09-25 71/week @ 2022-10-02 62/week @ 2022-10-09 91/week @ 2022-10-16 63/week @ 2022-10-23 104/week @ 2022-10-30 129/week @ 2022-11-06 69/week @ 2022-11-13 76/week @ 2022-11-20 91/week @ 2022-11-27

387 downloads per month


72 lines


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.