local level1 = loadstring([[
local function level3()
ngx.say(debug.traceback())
end
local function level2()
level3()
end
level2()]])
level1()
$ curl localhost:8080
stack traceback:
[string "..."]:3: in function 'level3'
[string "..."]:7: in function 'level2'
[string "..."]:10: in function 'level1'
./src/a.lua:12: in function <./src/a.lua:1>
遇到个问题,我想获取lua函数的调用链,但是用loadstring执行产生的lua函数调用链获取不到,想问下大家有什么解决方法么。
local function hook(event_type)
ngx.say(event_type, ' ', debug.getinfo(2).name)
end
local level1 = loadstring([[
local function level3()
ngx.say("I am in level3")
end
local function level2()
level3()
end
level2()
]])
debug.sethook(hook, "cr")
level1()
debug.sethook()
$ curl localhost:8080
call level1
call level2
call level3
call say
I am in level3
return level3
return level2
return level1
call sethook