Safe Haskell | None |
---|---|
Language | Haskell2010 |
Debugging helpers
Synopsis
- pprint :: Show a => a -> IO ()
- pshow :: Show a => a -> String
- ptrace :: Show a => a -> a
- traceWith :: (a -> String) -> a -> a
- debugLevel :: Int
- ptraceAt :: Show a => Int -> String -> a -> a
- ptraceAtWith :: Show a => Int -> (a -> String) -> a -> a
- dbg0 :: Show a => String -> a -> a
- dbg1 :: Show a => String -> a -> a
- dbg2 :: Show a => String -> a -> a
- dbg3 :: Show a => String -> a -> a
- dbg4 :: Show a => String -> a -> a
- dbg5 :: Show a => String -> a -> a
- dbg6 :: Show a => String -> a -> a
- dbg7 :: Show a => String -> a -> a
- dbg8 :: Show a => String -> a -> a
- dbg9 :: Show a => String -> a -> a
- dbg0With :: Show a => (a -> String) -> a -> a
- dbg1With :: Show a => (a -> String) -> a -> a
- dbg2With :: Show a => (a -> String) -> a -> a
- dbg3With :: Show a => (a -> String) -> a -> a
- dbg4With :: Show a => (a -> String) -> a -> a
- dbg5With :: Show a => (a -> String) -> a -> a
- dbg6With :: Show a => (a -> String) -> a -> a
- dbg7With :: Show a => (a -> String) -> a -> a
- dbg8With :: Show a => (a -> String) -> a -> a
- dbg9With :: Show a => (a -> String) -> a -> a
- dbgExit :: Show a => String -> a -> a
- ptraceAtIO :: (MonadIO m, Show a) => Int -> String -> a -> m ()
- dbg0IO :: (MonadIO m, Show a) => String -> a -> m ()
- dbg1IO :: (MonadIO m, Show a) => String -> a -> m ()
- dbg2IO :: (MonadIO m, Show a) => String -> a -> m ()
- dbg3IO :: (MonadIO m, Show a) => String -> a -> m ()
- dbg4IO :: (MonadIO m, Show a) => String -> a -> m ()
- dbg5IO :: (MonadIO m, Show a) => String -> a -> m ()
- dbg6IO :: (MonadIO m, Show a) => String -> a -> m ()
- dbg7IO :: (MonadIO m, Show a) => String -> a -> m ()
- dbg8IO :: (MonadIO m, Show a) => String -> a -> m ()
- dbg9IO :: (MonadIO m, Show a) => String -> a -> m ()
- plog :: Show a => String -> a -> a
- plogAt :: Show a => Int -> String -> a -> a
- traceParse :: String -> TextParser m ()
- dbgparse :: Int -> String -> TextParser m ()
- module Debug.Trace
Documentation
traceWith :: (a -> String) -> a -> a Source #
Trace (print to stderr) a showable value using a custom show function.
debugLevel :: Int Source #
Global debug level, which controls the verbosity of debug output
on the console. The default is 0 meaning no debug output. The
--debug
command line flag sets it to 1, or --debug=N
sets it to
a higher value (note: not --debug N
for some reason). This uses
unsafePerformIO and can be accessed from anywhere and before normal
command-line processing. When running with :main in GHCI, you must
touch and reload this module to see the effect of a new --debug option.
After command-line processing, it is also available as the debug_
field of CliOpts
.
{--}
{--}
ptraceAt :: Show a => Int -> String -> a -> a Source #
Pretty-print a label and a showable value to the console if the global debug level is at or above the specified level. At level 0, always prints. Otherwise, uses unsafePerformIO.
ptraceAtWith :: Show a => Int -> (a -> String) -> a -> a Source #
Like ptraceAt, but takes a custom show function instead of a label.
dbg0 :: Show a => String -> a -> a Source #
Pretty-print a label and the showable value to the console, then return it.
dbg1 :: Show a => String -> a -> a Source #
Pretty-print a label and the showable value to the console when the global debug level is >= 1, then return it. Uses unsafePerformIO.
dbg0With :: Show a => (a -> String) -> a -> a Source #
Like dbg0, but takes a custom show function instead of a label.
dbgExit :: Show a => String -> a -> a Source #
Like dbg0, but also exit the program. Uses unsafePerformIO.
ptraceAtIO :: (MonadIO m, Show a) => Int -> String -> a -> m () Source #
Like ptraceAt, but convenient to insert in an IO monad (plus convenience aliases). XXX These have a bug; they should use traceIO, not trace, otherwise GHC can occasionally over-optimise (cf lpaste a few days ago where it killed/blocked a child thread).
plog :: Show a => String -> a -> a Source #
Log a label and a pretty-printed showable value to ./debug.log, then return it. Can fail, see plogAt.
plogAt :: Show a => Int -> String -> a -> a Source #
Log a label and a pretty-printed showable value to ./debug.log, if the global debug level is at or above the specified level. At level 0, always logs. Otherwise, uses unsafePerformIO. Tends to fail if called more than once, at least when built with -threaded (Exception: debug.log: openFile: resource busy (file is locked)).
traceParse :: String -> TextParser m () Source #
Print the provided label (if non-null) and current parser state (position and next input) to the console. (See also megaparsec's dbg.)
module Debug.Trace