diff options
author | Jo-Philipp Wich <jow@openwrt.org> | 2009-07-10 13:15:43 +0000 |
---|---|---|
committer | Jo-Philipp Wich <jow@openwrt.org> | 2009-07-10 13:15:43 +0000 |
commit | 6ea0b5eb454457c3328ae002b3d32bb1555f5891 (patch) | |
tree | 3848102ddc8694aa4cda4f9c14b1e299fa119bd1 | |
parent | 7372c00dda800ee887ec63a6c3e0c3838da7897d (diff) |
libs/core: make memory tracer work with c and r events, avoid string allocations for debug output
-rw-r--r-- | libs/core/luasrc/debug.lua | 15 |
1 files changed, 11 insertions, 4 deletions
diff --git a/libs/core/luasrc/debug.lua b/libs/core/luasrc/debug.lua index f991ab8a6..d64700e0e 100644 --- a/libs/core/luasrc/debug.lua +++ b/libs/core/luasrc/debug.lua @@ -6,13 +6,20 @@ 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") +function trap_memtrace(flags, dest) + flags = flags or "clr" + local tracefile = io.open(dest or "/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") + if tracefile then + tracefile:write( + "[", what, "] ", info.source, ":", (line or "?"), "\t", + (info.namewhat or ""), "\t", + (info.name or ""), "\t", + collectgarbage("count"), "\n" + ) + end end debug.sethook(trap, flags) |