From: Jo-Philipp Wich Date: Fri, 10 Jul 2009 13:15:43 +0000 (+0000) Subject: libs/core: make memory tracer work with c and r events, avoid string allocations... X-Git-Tag: 0.10.0~1393 X-Git-Url: https://git.librecmc.org/?a=commitdiff_plain;h=6ea0b5eb454457c3328ae002b3d32bb1555f5891;p=oweals%2Fluci.git libs/core: make memory tracer work with c and r events, avoid string allocations for debug output --- 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)