You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
66 lines
1.8 KiB
66 lines
1.8 KiB
local _,rematch = ...
|
|
local L = rematch.localization
|
|
rematch.debug = {}
|
|
|
|
local debugTypes = {
|
|
error = true,
|
|
layout = false,
|
|
savedvar = false,
|
|
journal = false,
|
|
roster = false,
|
|
event = true,
|
|
updates = true,
|
|
teams = false,
|
|
}
|
|
|
|
rematch.debug.times = {} -- used to log times
|
|
local profileStop
|
|
|
|
-- returns where the calling function was called from
|
|
function rematch.debug:CallerID()
|
|
local where = (debugstack():match(".-\n.-\n.-\n.-\\AddOns\\.-\\(.-:%d+.-)\n") or ""):gsub("\"]","")
|
|
if where:len()==0 then
|
|
where = (debugstack():match(".-\n.-\n.-\\AddOns\\.-\\(.-:%d+.-)\n") or ""):gsub("\"]","")
|
|
end
|
|
return where:len()>0 and where or debugstack()
|
|
end
|
|
|
|
|
|
function rematch.debug:Write(debugType,...)
|
|
if debugTypes[debugType] then
|
|
print(...)
|
|
end
|
|
end
|
|
|
|
-- returns the parentKey under rematch of the given frame
|
|
function rematch.debug:GetModuleName(module)
|
|
for k,v in pairs(rematch) do
|
|
if module==v then
|
|
return k
|
|
end
|
|
end
|
|
return module
|
|
end
|
|
|
|
-- call this to wrap all update functions to print "Updating <parentKey>"
|
|
local updateHooks
|
|
function rematch.debug:MonitorUpdates()
|
|
for k,v in pairs(rematch) do
|
|
if type(v)=="table" and type(v.Update)=="function" then
|
|
local o = v.Update
|
|
rematch[k].Update = function(self,...)
|
|
rematch.debug:Write("updates","Updating",k)
|
|
return o(self,...)
|
|
end
|
|
end
|
|
end
|
|
end
|
|
|
|
function rematch.debug:StartProfile()
|
|
profileStop = debugprofilestop()
|
|
end
|
|
|
|
function rematch.debug:Profile(name)
|
|
rematch.debug.times[name] = (rematch.debug.times[name] or 0) + (debugprofilestop()-profileStop)
|
|
profileStop = debugprofilestop()
|
|
end
|