Lua内置的调试器用法详解

 Lua提供了一个调试库,它提供了所有的基本功能,创造自己的调试器。即便如此,也没有内置的Lua调试器,Lua为开发者创建很多调试器是开源。

调试Lua库中可用的功能列于下表连同它的用途。

 上面列表中的Lua调试功能的完整列表,我们经常使用,使用上述功能,并提供了更方便的调试库。使用这些函数和创建自己的调试器是相当复杂,不是最好的选择的。无论如何,我们将看到使用简单的调试功能的例子。

function myfunction ()

print(debug.traceback("Stack trace"))

print(debug.getinfo(1))

print("Stack trace end")

 return 10

end

myfunction ()

print(debug.getinfo(1))

当我们运行上面的程序,会得到堆栈跟踪信息,如下图所示。

Stack trace

stack traceback:

 test2.lua:2: in function 'myfunction'

 test2.lua:8: in main chunk

 [C]: ?

table: 0054C6C8

Stack trace end

在上面的示例程序中,堆栈跟踪是通过使用调试库中可用debug.trace功能打印。debug.getinfo得到函数的当前表。

另外一个例子

我们经常会需要知道一个函数的局部变量而进行调试。为此可以使用setupvalue设置并使用getupvalue获取这些局部变量、。一个简单的例子对本如下所示。

function newCounter ()

  local n = 0

  local k = 0

  return function ()

    k = n

    n = n + 1

    return n

    end

end

counter = newCounter ()

print(counter())

print(counter())

local i = 1

repeat

  name, val = debug.getupvalue(counter, i)

  if name then

    print ("index", i, name, "=", val)

 if(name == "n") then

  debug.setupvalue (counter,2,10)

 end

    i = i + 1

  end -- if

until not name

print(counter())

以上是 Lua内置的调试器用法详解 的全部内容, 来源链接: utcz.com/z/320876.html

回到顶部