debug.traceback([thread,] [message[, level]])
如果 message 有,且不是字符串或 nil,函数不做任何处理直接返回 message 。否则,它返回调用栈的栈回溯信息。字符串可选项 message 被添加在栈回溯信息的开头。 数字可选项 level 指明从栈的哪一层开始回溯 (默认为 1 ,即调用 traceback 的那里)。
方法使用
print(debug.traceback())
直接在需要打印堆栈的地方使用即可!
e.g.
local test = test or {}
function test:testFuncA()
print("testFuncA")
print(debug.traceback())
self:testFuncB()
end
function test:testFuncB()
print("testFuncB")
print(debug.traceback("", 2))
self:testFuncC()
end
function test:testFuncC()
print("testFuncC")
print(debug.traceback("message", 1))
end
test:testFuncA()
--[[
testFuncA
stack traceback:
C:\Users\user\Desktop\transition\test.lua:5: in function 'testFuncA'
C:\Users\user\Desktop\transition\test.lua:20: in main chunk
[C]: ?
testFuncB
stack traceback:
C:\Users\user\Desktop\transition\test.lua:6: in function 'testFuncA'
C:\Users\user\Desktop\transition\test.lua:20: in main chunk
[C]: ?
testFuncC
message
stack traceback:
C:\Users\user\Desktop\transition\test.lua:17: in function 'testFuncC'
C:\Users\user\Desktop\transition\test.lua:12: in function 'testFuncB'
C:\Users\user\Desktop\transition\test.lua:6: in function 'testFuncA'
C:\Users\user\Desktop\transition\test.lua:20: in main chunk
[C]: ?
]]