Added memory tracer
This commit is contained in:
parent
c08c0fdede
commit
e63d3f03eb
2 changed files with 28 additions and 2 deletions
|
@ -1,2 +1,25 @@
|
||||||
module("luci.debug", package.seeall)
|
local debug = require "debug"
|
||||||
__file__ = debug.getinfo(1, 'S').source:sub(2)
|
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
|
||||||
|
|
||||||
|
|
|
@ -112,11 +112,14 @@ function httpdispatch(request)
|
||||||
end
|
end
|
||||||
|
|
||||||
luci.http.close()
|
luci.http.close()
|
||||||
|
|
||||||
|
--context._disable_memtrace()
|
||||||
end
|
end
|
||||||
|
|
||||||
--- Dispatches a LuCI virtual path.
|
--- Dispatches a LuCI virtual path.
|
||||||
-- @param request Virtual path
|
-- @param request Virtual path
|
||||||
function dispatch(request)
|
function dispatch(request)
|
||||||
|
--context._disable_memtrace = require "luci.debug".trap_memtrace()
|
||||||
local ctx = context
|
local ctx = context
|
||||||
ctx.path = request
|
ctx.path = request
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue