base-4.17.1.0: Basic libraries
Safe HaskellNone
LanguageHaskell2010

GHC.Stack.CloneStack

Description

This module exposes an interface for capturing the state of a thread's execution stack for diagnostics purposes: cloneMyStack , cloneThreadStack .

Such a "cloned" stack can be decoded with decode to a stack trace, given that the -finfo-table-map is enabled.

Since: base-4.17.0.0

Documentation

data StackSnapshot Source #

A frozen snapshot of the state of an execution stack.

Since: base-4.17.0.0

Constructors

data StackEntry Source #

Represetation for the source location where a return frame was pushed on the stack. This happens every time when a case ... of scrutinee is evaluated.

Constructors

Instances

Instances details
Instance details

Defined in GHC.Stack.CloneStack

Instance details

Defined in GHC.Stack.CloneStack

cloneMyStack :: IO StackSnapshot Source #

Clone the stack of the executing thread

Since: base-4.17.0.0

cloneThreadStack :: ThreadId -> IO StackSnapshot Source #

Clone the stack of a thread identified by its ThreadId

Since: base-4.17.0.0

decode :: StackSnapshot -> IO [StackEntry] Source #

Decode a StackSnapshot to a stacktrace (a list of StackEntry ). The stack trace is created from return frames with according InfoProvEnt entries. To generate them, use the GHC flag -finfo-table-map. If there are no InfoProvEnt entries, an empty list is returned.

Please note:

  • To gather StackEntry from libraries, these have to be compiled with -finfo-table-map, too.
  • Due to optimizations by GHC (e.g. inlining) the stacktrace may change with different GHC parameters and versions.
  • The stack trace is empty (by design) if there are no return frames on the stack. (These are pushed every time when a case ... of scrutinee is evaluated.)

Since: base-4.17.0.0

AltStyle によって変換されたページ (->オリジナル) /