LuaPanda
LuaPanda copied to clipboard
不能触发_gc元方法函数中的断点的问题
环境 windows 10 64 vscode 1.36.1 标准lua5.3.4
重现 local t = {x = "on gc"} setmetatable(t,{__gc = function (o) print(o.x)--此处打断点 end}) t = nil collectgarbage()
可以预见,会输出 on gc,而事实也是如此。但是,这个断点却不会触发。
感谢反馈~ 我们初步做验证,在__gc中打印堆栈是有数据的 stack traceback: ./x1.lua:69: in function <./x1.lua:67> [C]: in function 'collectgarbage' ./x1.lua:72: in main chunk [C]: in ? 但是调试器sethook设置的钩子中,lua虚拟机没有把__gc函数信息传过来。 调试器中能拿到的信息如下: ./LuaPanda.lua:1643: in function 'LuaPanda.debug_hook' [C]: in function 'collectgarbage' ./x1.lua:72: in main chunk [C]: in ? 没有__gc函数的信息,所以调试器断点进不去。 但有趣的是,元表__index设置函数是可以断点进去的。 我们后面再做一下验证,看__gc是否有什么特殊处理, 有进展会在这里反馈