From: Steven Barth Date: Fri, 5 Sep 2008 20:32:20 +0000 (+0000) Subject: Added memory tracer X-Git-Tag: 0.8.0~125 X-Git-Url: https://git.archive.openwrt.org/?p=project%2Fluci.git;a=commitdiff_plain;h=e63d3f03eb1360c1d2c1bc58a343e2e8adc78ace Added memory tracer --- 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 + diff --git a/libs/web/luasrc/dispatcher.lua b/libs/web/luasrc/dispatcher.lua index fd2be1eb4..12093fe7a 100644 --- a/libs/web/luasrc/dispatcher.lua +++ b/libs/web/luasrc/dispatcher.lua @@ -112,11 +112,14 @@ function httpdispatch(request) end luci.http.close() + + --context._disable_memtrace() end --- Dispatches a LuCI virtual path. -- @param request Virtual path function dispatch(request) + --context._disable_memtrace = require "luci.debug".trap_memtrace() local ctx = context ctx.path = request