ghc-heap-view-0.5.3: ghc-heap-view.cabal
Name: ghc-heap-view
Version: 0.5.3
Synopsis: Extract the heap representation of Haskell values and thunks
Description:
This library provides functions to introspect the Haskell heap, for example
to investigate sharing and lazy evaluation.
.
It has been inspired by (and taken code from) the vacuum package and the GHCi
debugger, but also allows to investiage thunks and other closures.
.
This package also provides a new GHCi-command, @:printHeap@, which allows you
to inspect the current heap representation of a value, including sharing and
cyclic references. To enable the command, you need to load the included ghci
script or add it to @~/.ghci@, as explained by @cabal install@. Once it is
set up, you can do this:
.
>> let value = "A Value"
>> let x = (value, if head value == 'A' then value else "", cycle [True, False])
>> :printHeap x
>let x1 = _bco
> x21 = []
>in (x1,_bco,_bco)
>> length (take 100 (show x)) `seq` return () -- evaluate everything
>> :printHeap x
>let x1 = "A Value"
> x16 = True : False : x16
>in (x1,x1,x16)
.
You can change the maximum recursion depth using @:setPrintHeapDepth@:
.
>> :setPrintHeapDepth 3
>> :printHeap x
>let x1 = C# 'A' : ... : ...
>in (x1,x1,True : ... : ...)
.
If the view is impaired by blackholes (written @_bh@), running
@System.Mem.performGC@ usually helps.
.
The work on this package has been supported by the Deutsche Telekom Stiftung
(<http://telekom-stiftung.de>).
License: BSD3
License-file: LICENSE
Author: Joachim Breitner, Dennis Felsing
Maintainer: Joachim Breitner <mail@joachim-breitner.de>
Copyright: 2012-2014 Joachim Breitner
bug-reports: https://github.com/nomeata/ghc-heap-view
Category: Debug, GHC
Build-type: Custom
Cabal-version: >=1.14
Extra-source-files: Demo.hs
data-files: ghci
Flag prim-supports-any
Description: The used GHC supports Any as an argument to foreign prim functions (GHC ticket #5931)
Default: False
Flag ghc_7_7
Library
Default-Language: Haskell2010
Exposed-modules:
GHC.HeapView
GHC.AssertNF
GHC.Disassembler
GHC.HeapView.Debug
Build-depends:
base >= 4.5 && < 4.8,
containers,
transformers,
template-haskell,
bytestring >= 0.10,
binary
if flag(ghc_7_7)
build-depends: ghc >= 7.7
cc-options: -DGHC_7_7
cpp-options: -DGHC_7_7
else
build-depends: ghc < 7.7
C-Sources: cbits/HeapView.c cbits/HeapViewPrim.cmm
Hs-source-dirs: src/
Ghc-options: -Wall
default-language: Haskell2010
if flag(prim-supports-any)
cpp-options: -DPRIM_SUPPORTS_ANY
test-suite Test
type: exitcode-stdio-1.0
main-is: Test.hs
build-depends: base, ghc-heap-view, deepseq
default-language: Haskell2010
Ghc-options: -O0
source-repository head
type: git
location: git://git.nomeata.de/ghc-heap-view.git
subdir: Cabal