Lua 의 debug. traceback () 을 개조 하여 스 택 의 모든 부분 변 수 를 표시 합 니 다.

1618 단어 lua
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) .. "\tC function
" else -- Lua function ret = ret .. string.format("\t[%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 .. "\t\t" .. name .. " =\t" .. 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('\t', len) local ret = "" if type(v) == "table" then if len > 5 then return "\t{ ... }" end local t = "" for k, v1 in pairs(v) do t = t .. "
\t" .. pre .. tostring(k) .. ":" t = t .. tostringex(v1, len + 1) end if t == "" then ret = ret .. pre .. "{ }\t(" .. tostring(v) .. ")" else if len > 0 then ret = ret .. "\t(" .. tostring(v) .. ")
" end ret = ret .. pre .. "{" .. t .. "
" .. pre .. "}" end else ret = ret .. pre .. tostring(v) .. "\t(" .. type(v) .. ")" end return ret end

좋은 웹페이지 즐겨찾기