Debug.Trace.Binary

ghc-trace-events-0.1.2.9: Faster traceEvent and traceMarker, and binary object logging for eventlog

Safe Haskell | None
Language | Haskell2010

Debug.Trace.Binary

Contents

- Binary eventlog tracing

Description

Arbitary binary object logging available for GHC 8.8 or later. Unlike the other tracing functions `traceBinaryEvent` takes an arbitrary `ByteString` object as opposed to a UTF-8 encoded string.

Synopsis

- traceBinaryEvent :: ByteString -> a -> a
- traceBinaryEventIO :: ByteString -> IO ()

# Binary eventlog tracing

traceBinaryEvent :: ByteString -> a -> a #

The `traceBinaryEvent` function behaves like `traceEvent` but with the difference that the message is a binary object rather than a UTF-8 encoded string.

It is suitable for use in pure code. In an IO context use `traceBinaryEventIO` instead.

Note that when using GHC's SMP runtime, it is possible (but rare) to get duplicate events emitted if two CPUs simultaneously evaluate the same thunk that uses `traceBinaryEvent`.

Also note that this function doesn't evaluate the `ByteString` if user tracing in evnetlog is disabled.

The input should be shorter than \(2^{16}\) bytes. Otherwise the RTS generates a broken eventlog.

traceBinaryEventIO :: ByteString -> IO () #

The `traceBinaryEventIO` function emits a binary message to the eventlog, if eventlog profiling is available and enabled at runtime.

Compared to `traceBinaryEvent`, `traceBinaryEventIO` sequences the event with respect to other IO actions.

Also note that this function doesn't evaluate the `ByteString` if user tracing in evnetlog is disabled.

The input should be shorter than \(2^{16}\) bytes. Otherwise the RTS generates a broken eventlog.