Add more sanity checking
[ghc-heap-view.git] / ghc-heap-view.tex
1 \documentclass[DIV16,twocolumn,10pt]{scrreprt}
2 \usepackage{paralist}
3 \usepackage{graphicx}
4 \usepackage[final]{hcar}
5
6 %include polycode.fmt
7
8 \begin{document}
9
10 \begin{hcarentry}{ghc-heap-view}
11 \report{Joachim Breitner}
12 \status{active development}
13 \participants{Dennis Felsing}
14 \makeheader
15
16 The library ghc-heap-view provides means to inspect the GHC's heap and analyze the actual layout of Haskell objects in memory. This allows you to investigate memory consumption, sharing and lazy evaluation.
17
18 This means that the actual layout of Haskell objects in memory can be analyzed.
19 You can investigate sharing as well as lazy evaluation using ghc-heap-view.
20
21 The package also provides the GHCi command \texttt{:printHeap}, which is similar to the debuggers' \texttt{:print} command but is able to show more closures and their sharing behaviour:
22
23 \begin{verbatim}
24 > let x = cycle [True, False]
25 > :printHeap x
26 _bco
27 > head x
28 True
29 > :printHeap x
30 let x1 = True : _thunk x1 [False]
31 in x1
32 > take 3 x
33 [True,False,True]
34 > :printHeap x
35 let x1 = True : False : x1
36 in x1
37 \end{verbatim}
38
39 The graphical tool ghc-vis~\cref{ghc-vis} builds on ghc-heap-view.
40
41 \FurtherReading
42   \begin{compactitem}
43     \item \url{http://www.joachim-breitner.de/blog/archives/548-ghc-heap-view-Complete-referential-opacity.html}
44     \item \url{http://www.joachim-breitner.de/blog/archives/580-GHCi-integration-for-GHC.HeapView.html}
45     \item \url{http://www.joachim-breitner.de/blog/archives/590-Evaluation-State-Assertions-in-Haskell.html}
46   \end{compactitem}
47 \end{hcarentry}
48
49 \end{document}
50 \r