diff options
author | Steven Barth <steven@midlink.org> | 2008-09-05 20:32:20 +0000 |
---|---|---|
committer | Steven Barth <steven@midlink.org> | 2008-09-05 20:32:20 +0000 |
commit | e63d3f03eb1360c1d2c1bc58a343e2e8adc78ace (patch) | |
tree | 6e0d116d4bd3018947186d52d5d14b13c37b9313 /libs/core/luasrc/debug.lua | |
parent | c08c0fdedea94c7e8695ec13b22bf9a25a656478 (diff) |
Added memory tracer
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 + |