Add ghci file providing :printHeap command
authorJoachim Breitner <mail@joachim-breitner.de>
Thu, 20 Dec 2012 12:56:24 +0000 (12:56 +0000)
committerJoachim Breitner <mail@joachim-breitner.de>
Thu, 20 Dec 2012 12:56:24 +0000 (12:56 +0000)
Setup.hs
ghc-heap-view.cabal
ghci [new file with mode: 0644]

index d7dc6ae..8957cd5 100644 (file)
--- a/Setup.hs
+++ b/Setup.hs
@@ -3,8 +3,20 @@ import Distribution.Simple.Setup
 import Distribution.Simple.LocalBuildInfo
 import Distribution.PackageDescription (PackageDescription)
 
-main = defaultMainWithHooks $
-       simpleUserHooks { postConf = postConfHook (postConf simpleUserHooks) }
+import System.FilePath
+
+main = defaultMainWithHooks $ simpleUserHooks
+      { postInst = postInstHook (postInst simpleUserHooks)
+      , postConf = postConfHook (postConf simpleUserHooks)
+      }
+
+postInstHook oldHook args iflags pDesc lbi = do
+  let instDataDir = datadir $ absoluteInstallDirs pDesc lbi (fromFlag $ copyDest defaultCopyFlags)
+  putStrLn "To enable the GHCi integration, you have to load a ghci file in GHCi. To do this automatically when GHCi is started run:"
+  putStrLn $ "echo \":script " ++ (instDataDir </> "ghci") ++ "\" >> ~/.ghci"
+
+  oldHook args iflags pDesc lbi
+
 
 postConfHook oldHook args flags descr buildInfo = case profFlag of
   Flag True -> error "This library cannot be built using profiling. Try invoking cabal with the --disable-library-profiling flag."
index 7da189f..febabcb 100644 (file)
@@ -19,6 +19,7 @@ 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)
diff --git a/ghci b/ghci
new file mode 100644 (file)
index 0000000..19b52f0
--- /dev/null
+++ b/ghci
@@ -0,0 +1,5 @@
+let _ghcHeapViewDepth = 1000 :: Int
+
+:def setPrintHeapDepth \x -> return $ "let _ghcHeapViewDepth = " ++ x ++ ":: Int"
+
+:def printHeap \x -> return $ "GHC.HeapView.buildHeapGraph _ghcHeapViewDepth (GHC.HeapView.asBox (" ++ x ++ ")) >>= putStrLn . GHC.HeapView.ppHeapGraph"