name: Hoed version: 0.3.1 synopsis: Lightweight algorithmic debugging. description: Hoed is a tracer and debugger for the programming language Haskell. You can trace a program by annotating functions in suspected modules and linking your program against standard profiling libraries. . To locate a defect with Hoed you annotate suspected functions and compile as usual. Then you run your program, information about the annotated functions is collected. Finally you connect to a debugging session using a webbrowser. . Hoed comes in two flavours: Hoed.Pure and Hoed.Stk. Hoed.Pure is recommended over Hoed.Stk: to debug your program with Hoed.Pure you can optimize your program and do not need to enable profiling. Hoed.Stk is Hoed as presented on PLDI 2015 and possibly has benefits over Hoed.Pure for debugging concurrent/parallel programs. homepage: http://maartenfaddegon.nl license: BSD3 license-file: LICENSE author: Maarten Faddegon maintainer: hoed@maartenfaddegon.nl copyright: (c) 2000 Andy Gill, (c) 2010 University of Kansas, (c) 2013-2015 Maarten Faddegon category: Debug, Trace build-type: Simple cabal-version: >=1.10 extra-source-files: changelog, README.md, configure.Demo, configure.Generic, configure.Profiling, configure.Prop, configure.Pure, configure.Stk, run, test.Generic, test.Pure, test.Stk data-files: img/*.png flag buildExamples description: Build example executables. default: False flag validatePure description: Build test cases to validate Hoed-pure. default: False flag validateStk description: Build test cases to validate Hoed-stk. default: False flag validateGeneric description: Build test cases to validate deriving Observable for Generic types. default: False flag validateProp description: Build test cases to validate deriving judgements with properties. default: False Source-repository head type: git location: git://github.com/MaartenFaddegon/Hoed.git library exposed-modules: Debug.Hoed.Stk , Debug.Hoed.Pure other-modules: Debug.Hoed.Stk.Observe , Debug.Hoed.Stk.Render , Debug.Hoed.Stk.DemoGUI , Debug.Hoed.Pure.Observe , Debug.Hoed.Pure.EventForest , Debug.Hoed.Pure.CompTree , Debug.Hoed.Pure.Render , Debug.Hoed.Pure.DemoGUI , Debug.Hoed.Pure.Prop , Paths_Hoed build-depends: base >= 4 && <5 , template-haskell , array, containers , process , threepenny-gui == 0.6.* , filepath , libgraph == 1.7 , RBTree == 0.0.5 , regex-posix , mtl , directory , FPretty default-language: Haskell2010 -- ghc-options: -fwarn-unused-binds --------------------------------------------------------------------------- -- -- A list of example-programs that bind to a debugging session after the -- program terminates. After running 'cabal build' these are available to -- experiment with through 'sh run'. -- --------------------------------------------------------------------------- Executable hoed-examples-FPretty_indents_too_much if flag(buildExamples) build-depends: base >= 4 && < 5 , Hoed , threepenny-gui , filepath , containers , deepseq , array else buildable: False main-is: Main.hs hs-source-dirs: examples/FPretty default-language: Haskell2010 Executable hoed-examples-FPretty_indents_too_much__CC if flag(buildExamples) build-depends: base >= 4 && < 5 , Hoed , threepenny-gui , filepath , containers , deepseq , array else buildable: False main-is: Main.hs hs-source-dirs: examples/FPretty__CC default-language: Haskell2010 -- Executable hoed-examples-FPretty_indents_too_much__with_properties -- if flag(buildExamples) -- build-depends: base >= 4 && < 5 -- , Hoed -- , threepenny-gui -- , filepath -- , containers -- , deepseq -- , array -- , QuickCheck -- , mtl -- else -- buildable: False -- main-is: Main.hs -- hs-source-dirs: examples/FPretty__with_properties -- default-language: Haskell2010 Executable hoed-examples-Insertion_Sort_elements_disappear if flag(buildExamples) build-depends: base >= 4 && < 5 , Hoed , threepenny-gui , filepath else buildable: False main-is: Insertion_Sort_elements_disappear.hs hs-source-dirs: examples default-language: Haskell2010 Executable hoed-examples-XMonad_changing_focus_duplicates_windows if flag(buildExamples) build-depends: base >= 4 && < 5, Hoed, X11>=1.5 && < 1.7, mtl, unix, utf8-string, extensible-exceptions, random, containers, filepath, process, directory else buildable: False main-is: Main.hs hs-source-dirs: examples/XMonad_changing_focus_duplicates_windows default-language: Haskell2010 Executable hoed-examples-XMonad_changing_focus_duplicates_windows__CC if flag(buildExamples) build-depends: base >= 4 && < 5, Hoed, X11>=1.5 && < 1.7, mtl, unix, utf8-string, extensible-exceptions, random, containers, filepath, process, directory else buildable: False main-is: Main.hs hs-source-dirs: examples/XMonad_changing_focus_duplicates_windows__CC default-language: Haskell2010 Executable hoed-examples-XMonad_changing_focus_duplicates_windows__using_properties if flag(buildExamples) build-depends: base >= 4 && < 5, Hoed, X11>=1.5 && < 1.7, mtl, unix, utf8-string, extensible-exceptions, random, containers, filepath, process, directory else buildable: False main-is: Main.hs hs-source-dirs: examples/XMonad_changing_focus_duplicates_windows__using_properties default-language: Haskell2010 Executable hoed-examples-SummerSchool_compiler_does_not_terminate if flag(buildExamples) build-depends: base >= 4 && < 5, Hoed, X11>=1.5 && < 1.7, mtl, unix, utf8-string, extensible-exceptions, random, containers, filepath, process, directory, array else buildable: False main-is: Main.hs hs-source-dirs: examples/afp02Exercises/Compiler/ default-language: Haskell2010 Executable hoed-examples-Simple_higher-order_function if flag(buildExamples) build-depends: base >= 4 && < 5, Hoed, X11>=1.5 && < 1.7, mtl, unix, utf8-string, extensible-exceptions, random, containers, filepath, process, directory, array else buildable: False main-is: SimpleHO.hs hs-source-dirs: examples/ default-language: Haskell2010 Executable hoed-examples-Parity_test if flag(buildExamples) build-depends: base >= 4 && < 5, Hoed, X11>=1.5 && < 1.7, mtl, unix, utf8-string, extensible-exceptions, random, containers, filepath, process, directory, array else buildable: False main-is: Parity.hs hs-source-dirs: examples/ default-language: Haskell2010 Executable hoed-examples-Expression_simplifier if flag(buildExamples) build-depends: base >= 4 && < 5, Hoed, X11>=1.5 && < 1.7, mtl, unix, utf8-string, extensible-exceptions, random, containers, filepath, process, directory, array else buildable: False main-is: Main1.hs hs-source-dirs: examples/ExpressionSimplifier default-language: Haskell2010 Executable hoed-examples-Expression_simplifier__with_properties if flag(buildExamples) build-depends: base >= 4 && < 5, Hoed, X11>=1.5 && < 1.7, mtl, unix, utf8-string, extensible-exceptions, random, containers, filepath, process, directory, array else buildable: False main-is: Main2.hs hs-source-dirs: examples/ExpressionSimplifier default-language: Haskell2010 -- -- -- Executable hoed-examples-Foldl -- if flag(buildExamples) -- build-depends: base >= 4.8 && < 5 -- , Hoed -- , threepenny-gui -- , filepath -- else -- buildable: False -- main-is: Foldl.hs -- hs-source-dirs: examples -- default-language: Haskell2010 -- ghc-options: -O0 -- -- Executable hoed-examples-HeadOnEmpty1 -- if flag(buildExamples) -- build-depends: base >= 4 && < 5 -- , Hoed -- , threepenny-gui -- , filepath -- else -- buildable: False -- main-is: HeadOnEmpty.hs -- hs-source-dirs: examples -- default-language: Haskell2010 -- ghc-options: -O0 -- -- Executable hoed-examples-HeadOnEmpty2 -- if flag(buildExamples) -- build-depends: base >= 4 && < 5 -- , Hoed -- , threepenny-gui -- , filepath -- else -- buildable: False -- main-is: HeadOnEmpty2.hs -- hs-source-dirs: examples -- default-language: Haskell2010 -- ghc-options: -O0 -- -- -- Executable hoed-examples-IOException -- -- build-depends: base >= 4 && < 5 -- -- , Hoed -- -- , threepenny-gui -- -- , filepath -- -- , hood -- -- main-is: IOException.hs -- -- hs-source-dirs: examples -- -- default-language: Haskell2010 -- -- ghc-options: -O0 -- -- Executable hoed-examples-IndirectRecursion -- if flag(buildExamples) -- build-depends: base >= 4 && < 5 -- , Hoed -- , threepenny-gui -- , filepath -- else -- buildable: False -- main-is: IndirectRecursion.lhs -- hs-source-dirs: examples -- default-language: Haskell2010 -- ghc-options: -O0 -- -- Executable hoed-examples-Pretty -- if flag(buildExamples) -- build-depends: base >= 4 && < 5 -- , Hoed -- , threepenny-gui -- , filepath -- , array -- else -- buildable: False -- main-is: Pretty.hs -- hs-source-dirs: examples -- default-language: Haskell2010 -- ghc-options: -O0 -- -- Executable hoed-examples-Example1 -- if flag(buildExamples) -- build-depends: base >= 4 && < 5 -- , Hoed -- , threepenny-gui -- , filepath -- else -- buildable: False -- main-is: Example1.hs -- hs-source-dirs: examples -- default-language: Haskell2010 -- ghc-options: -O0 -- -- -- Executable hoed-examples-Example2 -- -- build-depends: base >= 4 && < 5 -- -- , Hoed -- -- , threepenny-gui -- -- , filepath -- -- main-is: Example2.hs -- -- hs-source-dirs: examples -- -- default-language: Haskell2010 -- -- Executable hoed-examples-Example3 -- if flag(buildExamples) -- build-depends: base >= 4 && < 5 -- , Hoed -- , threepenny-gui -- , filepath -- else -- buildable: False -- main-is: Example3.lhs -- hs-source-dirs: examples -- default-language: Haskell2010 -- ghc-options: -O0 -- -- Executable hoed-examples-Example4 -- if flag(buildExamples) -- build-depends: base >= 4 && < 5 -- , Hoed -- , threepenny-gui -- , filepath -- else -- buildable: False -- main-is: Example4.hs -- hs-source-dirs: examples -- default-language: Haskell2010 -- ghc-options: -O0 -- -- Executable hoed-examples-Insort1 -- if flag(buildExamples) -- build-depends: base >= 4 && < 5 -- , Hoed -- , threepenny-gui -- , filepath -- else -- buildable: False -- main-is: Insort.lhs -- hs-source-dirs: examples -- default-language: Haskell2010 -- ghc-options: -O0 -- Executable hoed-examples-DoublingServer1 -- if flag(buildExamples) -- build-depends: base >= 4 && < 5 -- , Hoed -- , threepenny-gui -- , filepath -- , network -- else -- buildable: False -- main-is: DoublingServer.hs -- hs-source-dirs: examples -- default-language: Haskell2010 -- ghc-options: -O0 -- -- Executable hoed-examples-DoublingServer2 -- if flag(buildExamples) -- build-depends: base >= 4 && < 5 -- , Hoed -- , threepenny-gui -- , filepath -- , network -- else -- buildable: False -- main-is: DoublingServer2.hs -- hs-source-dirs: examples -- default-language: Haskell2010 -- ghc-options: -O0 -- -- Executable hoed-examples-DoublingServer3 -- if flag(buildExamples) -- build-depends: base >= 4 && < 5 -- , Hoed -- , threepenny-gui -- , filepath -- , network -- else -- buildable: False -- main-is: DoublingServer3.hs -- hs-source-dirs: examples -- default-language: Haskell2010 -- ghc-options: -O0 -- -- Executable hoed-examples-DoublingServer4 -- if flag(buildExamples) -- build-depends: base >= 4 && < 5 -- , Hoed -- , threepenny-gui -- , filepath -- , network -- else -- buildable: False -- main-is: DoublingServer4.hs -- hs-source-dirs: examples -- default-language: Haskell2010 -- ghc-options: -O0 -- -- Executable hoed-examples-DoublingServer5 -- if flag(buildExamples) -- build-depends: base >= 4 && < 5 -- , Hoed -- , threepenny-gui -- , filepath -- , network -- else -- buildable: False -- main-is: DoublingServer5.hs -- hs-source-dirs: examples -- default-language: Haskell2010 -- ghc-options: -O0 -- -- Executable hoed-examples-Hashmap -- if flag(buildExamples) -- build-depends: base >= 4 && < 5 -- , Hoed -- , threepenny-gui -- , filepath -- , array -- else -- buildable: False -- main-is: Hashmap.hs -- hs-source-dirs: examples -- default-language: Haskell2010 -- ghc-options: -O0 -- -- Executable hoed-examples-Responsibility -- if flag(buildExamples) -- build-depends: base >= 4 && < 5 -- , Hoed -- , threepenny-gui -- , filepath -- , array -- else -- buildable: False -- main-is: Responsibility.lhs -- hs-source-dirs: examples -- default-language: Haskell2010 -- ghc-options: -O0 -- -- Executable hoed-examples-TightRope1 -- if flag(buildExamples) -- build-depends: base >= 4 && < 5 -- , Hoed -- , threepenny-gui -- , filepath -- else -- buildable: False -- main-is: TightRope.hs -- hs-source-dirs: examples -- default-language: Haskell2010 -- ghc-options: -O0 -- -- Executable hoed-examples-TightRope2 -- if flag(buildExamples) -- build-depends: base >= 4 && < 5 -- , Hoed -- , threepenny-gui -- , filepath -- else -- buildable: False -- main-is: TightRope2.hs -- hs-source-dirs: examples -- default-language: Haskell2010 -- ghc-options: -O0 -- -- Executable hoed-examples-TightRope3 -- if flag(buildExamples) -- build-depends: base >= 4 && < 5 -- , Hoed -- , threepenny-gui -- , filepath -- else -- buildable: False -- main-is: TightRope3.hs -- hs-source-dirs: examples -- default-language: Haskell2010 -- ghc-options: -O0 -- -- Executable hoed-examples-AskName -- if flag(buildExamples) -- build-depends: base >= 4 && < 5 -- , Hoed -- , threepenny-gui -- , filepath -- else -- buildable: False -- main-is: AskName.hs -- hs-source-dirs: examples -- default-language: Haskell2010 -- ghc-options: -O0 --------------------------------------------------------------------------- -- -- A set of tests that instead of binding to a debugging session write the -- resulting computation graph to file; with the test.* scripts these are -- validated against references. -- --------------------------------------------------------------------------- Executable hoed-tests-Prop-t0 if flag(validateProp) build-depends: base >= 4 && < 5, Hoed else buildable: False main-is: Main.hs hs-source-dirs: tests/Prop/t0 default-language: Haskell2010 Executable hoed-tests-Prop-t1 if flag(validateProp) build-depends: base >= 4 && < 5, Hoed else buildable: False main-is: Main.hs hs-source-dirs: tests/Prop/t1 default-language: Haskell2010 Executable hoed-tests-Prop-t2 if flag(validateProp) build-depends: base >= 4 && < 5, Hoed, lazysmallcheck else buildable: False main-is: Main.hs hs-source-dirs: tests/Prop/t2 default-language: Haskell2010 Executable hoed-tests-Prop-t3 if flag(validateProp) build-depends: base >= 4 && < 5, Hoed, X11>=1.5 && < 1.7, mtl, unix, utf8-string, extensible-exceptions, random, containers, filepath, process, directory else buildable: False main-is: Main.hs hs-source-dirs: tests/Prop/t3 default-language: Haskell2010 Executable hoed-tests-Prop-t4 if flag(validateProp) build-depends: base >= 4 && < 5, Hoed, X11>=1.5 && < 1.7, mtl, unix, utf8-string, extensible-exceptions, random, containers, filepath, process, directory else buildable: False main-is: Main.hs hs-source-dirs: tests/Prop/t4 default-language: Haskell2010 -- Executable hoed-tests-Prop-t5 -- if flag(validateProp) -- build-depends: base >= 4 && < 5, Hoed, -- X11>=1.5 && < 1.7, mtl, unix, -- utf8-string >= 0.3 && < 0.4, -- extensible-exceptions, random, -- containers, filepath, process, directory -- else -- buildable: False -- main-is: Main.hs -- hs-source-dirs: tests/Prop/t5 -- default-language: Haskell2010 --------------------------------------------------------------------------- Executable hoed-tests-Generic-r0 if flag(validateGeneric) build-depends: base >= 4 && < 5 , Hoed else buildable: False main-is: r0.hs hs-source-dirs: tests/Generic default-language: Haskell2010 Executable hoed-tests-Generic-t0 if flag(validateGeneric) build-depends: base >= 4 && < 5 , Hoed else buildable: False main-is: t0.hs hs-source-dirs: tests/Generic default-language: Haskell2010 Executable hoed-tests-Generic-r1 if flag(validateGeneric) build-depends: base >= 4 && < 5 , Hoed else buildable: False main-is: r1.hs hs-source-dirs: tests/Generic default-language: Haskell2010 Executable hoed-tests-Generic-t1 if flag(validateGeneric) build-depends: base >= 4 && < 5 , Hoed else buildable: False main-is: t1.hs hs-source-dirs: tests/Generic default-language: Haskell2010 Executable hoed-tests-Generic-r2 if flag(validateGeneric) build-depends: base >= 4 && < 5 , Hoed else buildable: False main-is: r2.hs hs-source-dirs: tests/Generic default-language: Haskell2010 Executable hoed-tests-Generic-t2 if flag(validateGeneric) build-depends: base >= 4 && < 5 , Hoed else buildable: False main-is: t2.hs hs-source-dirs: tests/Generic default-language: Haskell2010 Executable hoed-tests-Generic-r3 if flag(validateGeneric) build-depends: base >= 4 && < 5 , Hoed else buildable: False main-is: r3.hs hs-source-dirs: tests/Generic default-language: Haskell2010 Executable hoed-tests-Generic-t3 if flag(validateGeneric) build-depends: base >= 4 && < 5 , Hoed else buildable: False main-is: t3.hs hs-source-dirs: tests/Generic default-language: Haskell2010 --------------------------------------------------------------------------- Executable hoed-tests-Pure-t1 if flag(validatePure) build-depends: base >= 4 && < 5, Hoed else buildable: False main-is: t1.hs hs-source-dirs: tests/Pure default-language: Haskell2010 Executable hoed-tests-Pure-t2 if flag(validatePure) build-depends: base >= 4 && < 5, Hoed else buildable: False main-is: t2.hs hs-source-dirs: tests/Pure default-language: Haskell2010 Executable hoed-tests-Pure-t3 if flag(validatePure) build-depends: base >= 4 && < 5, Hoed else buildable: False main-is: t3.hs hs-source-dirs: tests/Pure default-language: Haskell2010 Executable hoed-tests-Pure-t4 if flag(validatePure) build-depends: base >= 4 && < 5, Hoed else buildable: False main-is: t4.hs hs-source-dirs: tests/Pure default-language: Haskell2010 Executable hoed-tests-Pure-t5 if flag(validatePure) build-depends: base >= 4 && < 5, Hoed else buildable: False main-is: t5.hs hs-source-dirs: tests/Pure default-language: Haskell2010 Executable hoed-tests-Pure-t6 if flag(validatePure) build-depends: base >= 4 && < 5, Hoed else buildable: False main-is: t6.hs hs-source-dirs: tests/Pure default-language: Haskell2010 Executable hoed-tests-Pure-t7 if flag(validatePure) build-depends: base >= 4 && < 5, Hoed else buildable: False main-is: t7.hs hs-source-dirs: tests/Pure default-language: Haskell2010 --------------------------------------------------------------------------- Executable hoed-tests-Stk-DoublingServer if flag(validateStk) build-depends: base >= 4 && < 5 , Hoed , threepenny-gui , filepath , network else buildable: False main-is: DoublingServer.hs hs-source-dirs: tests/Stk default-language: Haskell2010 ghc-options: -O0 Executable hoed-tests-Stk-Insort2 if flag(validateStk) build-depends: base >= 4 && < 5 , Hoed , threepenny-gui , filepath else buildable: False main-is: Insort2.hs hs-source-dirs: tests/Stk default-language: Haskell2010 ghc-options: -O0 Executable hoed-tests-Stk-Example1 if flag(validateStk) build-depends: base >= 4 && < 5 , Hoed , threepenny-gui , filepath else buildable: False main-is: Example1.hs hs-source-dirs: tests/Stk default-language: Haskell2010 ghc-options: -O0 Executable hoed-tests-Stk-Example3 if flag(validateStk) build-depends: base >= 4 && < 5 , Hoed , threepenny-gui , filepath else buildable: False main-is: Example3.lhs hs-source-dirs: tests/Stk default-language: Haskell2010 ghc-options: -O0 Executable hoed-tests-Stk-Example4 if flag(validateStk) build-depends: base >= 4 && < 5 , Hoed , threepenny-gui , filepath else buildable: False main-is: Example4.hs hs-source-dirs: tests/Stk default-language: Haskell2010 ghc-options: -O0 Executable hoed-tests-Stk-IndirectRecursion if flag(validateStk) build-depends: base >= 4 && < 5 , Hoed , threepenny-gui , filepath else buildable: False main-is: IndirectRecursion.lhs hs-source-dirs: tests/Stk default-language: Haskell2010 ghc-options: -O0