diff options
Diffstat (limited to 'libs/core/luasrc/debug.lua')
-rw-r--r-- | libs/core/luasrc/debug.lua | 27 |
1 files changed, 25 insertions, 2 deletions
diff --git a/libs/core/luasrc/debug.lua b/libs/core/luasrc/debug.lua index a56400f34..f991ab8a6 100644 --- a/libs/core/luasrc/debug.lua +++ b/libs/core/luasrc/debug.lua @@ -1,2 +1,25 @@ -module("luci.debug", package.seeall) -__file__ = debug.getinfo(1, 'S').source:sub(2)
\ No newline at end of file +local debug = require "debug" +local io = require "io" +local collectgarbage = collectgarbage + +module "luci.debug" +__file__ = debug.getinfo(1, 'S').source:sub(2) + +-- Enables the memory tracer with given flags and returns a function to disable the tracer again +function trap_memtrace(flags) + flags = flags or "l" + local tracefile = io.open("/tmp/memtrace", "w") + + local function trap(what, line) + local info = debug.getinfo(2, "Sn") + tracefile:write(info.source..":"..line.."\t"..(info.namewhat or "").."\t"..(info.name or "").."\t"..collectgarbage("count").."\n") + end + + debug.sethook(trap, flags) + + return function() + debug.sethook() + tracefile:close() + end +end + |