今天好不容易偶然重现了一个渲染队列总是跳过一个渲染元素的问题,这问题一直存在但是却一直无法稳定重现。
拿到环境后开始分析问题,首先要知道这个对象有没有进渲染队列,可是渲染队列在导出接口的闭包内外界无法访问。
立马想到debug
库,利用多次调用debug.getupvalue
层层进入闭包,最终成功拿到了队列数据,发现对象在队列中,从而定位问题出在分帧渲染逻辑,跳转到响应代码位置问题迎刃而解。
local function getupval(f, k)
local i = 1
while true do
local n, v = debug.getupvalue(f, i)
if not n then
break
end
if n == k then
return v
end
i = i + 1
end
end
Ps: 感谢热心市民叶枫影提供线索!
版权属于:一名宅。
本文链接:https://zhaiyiming.com/archives/lua-debug-upvalue.html
转载时须注明出处及本声明