summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorJo-Philipp Wich <jow@openwrt.org>2009-07-10 13:15:43 +0000
committerJo-Philipp Wich <jow@openwrt.org>2009-07-10 13:15:43 +0000
commit6ea0b5eb454457c3328ae002b3d32bb1555f5891 (patch)
tree3848102ddc8694aa4cda4f9c14b1e299fa119bd1
parent7372c00dda800ee887ec63a6c3e0c3838da7897d (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.lua15
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)