pdlua luatrace.lua debugging library
[pdlua:pdlua.git] / examples / luatrace.lua
1 -- use like pd -lib lua -lib luatrace
2 -- TODO luatrace doesn't handle multiple return values
3 luatrace_setup = function ()
4   -- save original function to avoid recursion
5   local post = pd.post
6   local indent = ""
7   local step = "| "
8   for k, v in pairs(pd) do
9     if type(pd[k]) == "function" then
10       pd[k] = function(...)
11         post("luatrace: " .. indent .. ">> " .. k)
12         local oldindent = indent
13         indent = indent .. step 
14         r = v(...)
15         indent = oldindent
16         post("luatrace: " .. indent .. "<< " .. k)
17         return r
18       end
19     end
20   end
21 end