易网时代-编程资源站
Welcome
微信登录
编程资源
图片资源库
蚂蚁家优选
PDF转换器
软件资源
软件开发
、
小程序制作
、
系统集成与运维
、
空间租用
、
硬件开发
、
视频监控
、
技术咨询与支持
——联系电话:0311-88999002/88999003
首页
/
操作系统
/
Linux
/
改造Lua的debug.traceback() 让其显示栈上所有的局部变量
function tracebackex()
local ret = ""
local level = 2
ret = ret ..
"stack traceback: "
while
true do
--get stack info
local info = debug.getinfo(level,
"Sln"
)
if
not
info then
break
end
if
info.what ==
"C"
then -- C function
ret = ret .. tostring(level) ..
" C function "
else
-- Lua function
ret = ret .. string.format(
" [%s]:%d in function `%s` "
, info.short_src, info.currentline, info.name
or
"")
end
--get local vars
local i = 1
while
true do
local name, value = debug.getlocal(level, i)
if
not
name then
break
end
ret = ret ..
" "
.. name ..
" = "
.. tostringex(value, 3) ..
" "
i = i + 1
end
level = level + 1
end
return
ret
end
function tostringex(v, len)
if
len == nil then len = 0 end
local pre = string.rep(
" "
, len)
local ret = ""
if
type(v) ==
"table"
then
if
len > 5 then
return
" { ... }"
end
local t = ""
for
k, v1
in
pairs(v) do
t = t ..
" "
.. pre .. tostring(k) ..
":"
t = t .. tostringex(v1, len + 1)
end
if
t == "" then
ret = ret .. pre ..
"{ } ("
.. tostring(v) ..
")"
else
if
len > 0 then
ret = ret ..
" ("
.. tostring(v) ..
") "
end
ret = ret .. pre ..
"{"
.. t ..
" "
.. pre ..
"}"
end
else
ret = ret .. pre .. tostring(v) ..
" ("
.. type(v) ..
")"
end
return
ret
end
收藏该网址
版权所有©石家庄振强科技有限公司2024
冀ICP备08103738号-5
网站地图