diff --git a/Development/Shake/Core.hs b/Development/Shake/Core.hs
--- a/Development/Shake/Core.hs
+++ b/Development/Shake/Core.hs
@@ -45,12 +45,13 @@
     ,shakeVerbosity :: Int -- ^ 1 = normal, 0 = quiet, 2 = loud.
     ,shakeLint :: Bool -- ^ Run under lint mode, when set implies 'shakeParallel' is @1@ (defaults to 'False').
                        --   /This feature has not yet been completed, and should not be used./
+    ,shakeDump :: Bool -- ^ Dump all profiling information to @'shakeFiles'.json@ (defaults to 'False').
     }
     deriving (Show, Eq, Ord, Read)
 
 -- | The default set of 'ShakeOptions'.
 shakeOptions :: ShakeOptions
-shakeOptions = ShakeOptions ".shake" 1 1 1 False
+shakeOptions = ShakeOptions ".shake" 1 1 1 False False
 
 
 data ShakeException = ShakeException [Key] SomeException
@@ -218,6 +219,9 @@
                 if shakeLint
                     then mapM_ (wrapStack [] . runAction s0 . applyKeyValue . return . fst) =<< allEntries database
                     else parallel_ pool $ map (wrapStack [] . runAction s0) (actions rs)
+        when shakeDump $ do
+            json <- showJSON database
+            writeFile (shakeFiles ++ ".js") $ "var shake =\n" ++ json
     where
         stored = createStored rs
         execute = createExecute rs
diff --git a/Development/Shake/Database.hs b/Development/Shake/Database.hs
--- a/Development/Shake/Database.hs
+++ b/Development/Shake/Database.hs
@@ -11,7 +11,7 @@
 module Development.Shake.Database(
     Database, withDatabase,
     request, Response(..), finished,
-    allEntries
+    allEntries, showJSON,
     ) where
 
 import Development.Shake.Binary
@@ -180,6 +180,24 @@
                      | null now = error "Internal invariant broken, database seems to be cyclic (probably during lint)"
                      | otherwise = let ns = map fst now in ns ++ f [(a,b \\ map fst ns) | (a,b) <- later]
                     where (now,later) = partition (null . snd) xs
+
+
+showJSON :: Database -> IO String
+showJSON Database{..} = do
+    status <- readVar status
+    let ids = Map.fromList $ zip (Map.keys status) [0..]
+        f (k, v) | Just Info{..} <- getInfo v =
+            let xs = ["name:" ++ show (show k)
+                     ,"built:" ++ showTime built
+                     ,"changed:" ++ showTime changed
+                     ,"depends:" ++ show (mapMaybe (`Map.lookup` ids) (concat depends))
+                     ,"execution:" ++ show execution] ++
+                     ["traces:[" ++ intercalate "," (map showTrace traces) ++ "]" | traces /= []]
+                showTime (Time i) = show i
+                showTrace (a,b,c) = "{start:" ++ show b ++ ",stop:" ++ show c ++ ",command:" ++ show a ++ "}"
+            in  ["{" ++ intercalate ", " xs ++ "}"]
+        f _ = []
+    return $ "[" ++ intercalate "\n," (concatMap f $ Map.toList status) ++ "\n]"
 
 
 ---------------------------------------------------------------------
diff --git a/Development/Shake/Derived.hs b/Development/Shake/Derived.hs
--- a/Development/Shake/Derived.hs
+++ b/Development/Shake/Derived.hs
@@ -19,7 +19,7 @@
     let path2 = toNative path
     let cmd = unwords $ path2 : args
     putLoud cmd
-    res <- liftIO $ rawSystem path2 args
+    res <- traced ("system' " ++ cmd) $ rawSystem path2 args
     when (res /= ExitSuccess) $
         error $ "System command failed:\n" ++ cmd
 
diff --git a/Examples/Util.hs b/Examples/Util.hs
--- a/Examples/Util.hs
+++ b/Examples/Util.hs
@@ -33,7 +33,7 @@
             createDirectoryIfMissing True out
             when b $ renameFile tempfile dbfile
             shake shakeOptions{shakeFiles=out, shakeLint=True} $ rules args (out++)
-        _ -> shake shakeOptions{shakeFiles=out} $ rules args (out++)
+        _ -> shake shakeOptions{shakeFiles=out, shakeDump=True} $ rules args (out++)
 
 
 unobj :: FilePath -> FilePath
diff --git a/shake.cabal b/shake.cabal
--- a/shake.cabal
+++ b/shake.cabal
@@ -1,7 +1,7 @@
 cabal-version:      >= 1.6
 build-type:         Simple
 name:               shake
-version:            0.1.4
+version:            0.1.5
 license:            BSD3
 license-file:       LICENSE
 category:           Development
@@ -64,7 +64,7 @@
         parallel-io,
         transformers == 0.2.*,
         access-time == 0.1.*,
-        deepseq == 1.1.*
+        deepseq >= 1.1 && < 1.3
 
     exposed-modules:
         Development.Shake
