f991ab8a60335a84af3decf707e7bc83d899d791
[project/luci.git] / libs / core / luasrc / debug.lua
1 local debug = require "debug"
2 local io = require "io"
3 local collectgarbage = collectgarbage
4
5 module "luci.debug"
6 __file__ = debug.getinfo(1, 'S').source:sub(2)
7
8 -- Enables the memory tracer with given flags and returns a function to disable the tracer again
9 function trap_memtrace(flags)
10         flags = flags or "l"
11         local tracefile = io.open("/tmp/memtrace", "w")
12
13         local function trap(what, line)
14                 local info = debug.getinfo(2, "Sn")
15                 tracefile:write(info.source..":"..line.."\t"..(info.namewhat or "").."\t"..(info.name or "").."\t"..collectgarbage("count").."\n")
16         end
17
18         debug.sethook(trap, flags)
19
20         return function()
21                 debug.sethook()
22                 tracefile:close()
23         end
24 end
25