GHC.ExecutionStack

base-4.20.0.0: Core data structures and operations

Copyright | (c) The University of Glasgow 2013-2015
License | see libraries/base/LICENSE
Maintainer | ghc-devs@haskell.org
Stability | internal
Portability | non-portable (GHC Extensions)
Safe Haskell | None
Language | Haskell2010

GHC.ExecutionStack

Description

This is a module for efficient stack traces. This stack trace implementation is considered low overhead. Basic usage looks like this:

    import GHC.ExecutionStack

    myFunction :: IO ()
    myFunction = do
         putStrLn =<< showStackTrace

Your GHC must have been built with `libdw` support for this to work.

    user@host:~$ ghc --info | grep libdw
     ,("RTS expects libdw",YES)

Since: base-4.9.0.0

Synopsis

- data Location = Location {
  - objectName :: String
  - functionName :: String
  - srcLoc :: Maybe SrcLoc
  }
- data SrcLoc = SrcLoc {
  - sourceFile :: String
  - sourceLine :: Int
  - sourceColumn :: Int
  }
- getStackTrace :: IO (Maybe [Location])
- showStackTrace :: IO (Maybe String)

# Documentation

data Location Source #

Location information about an address from a backtrace.

Constructors

Location |
Fields objectName :: String functionName :: String srcLoc :: Maybe SrcLoc

data SrcLoc Source #

A location in the original program source.

Constructors

SrcLoc |
Fields sourceFile :: String sourceLine :: Int sourceColumn :: Int

getStackTrace :: IO (Maybe [Location]) Source #

Get a trace of the current execution stack state.

Returns `Nothing` if stack trace support isn't available on host machine.

showStackTrace :: IO (Maybe String) Source #

Get a string representation of the current execution stack state.