• 十八、一起学习Lua 调试(Debug)


    Lua 调试(Debug)

    Lua 提供了 debug 库用于提供创建我们自定义调试器的功能。Lua 本身并未有内置的调试器,但很多开发者共享了他们的 Lua 调试器代码。

    Lua 中 debug 库包含以下函数:

    上表列出了我们常用的调试函数,接下来我们可以看些简单的例子:

    实例

    1. function myfunction ()
    2. print(debug.traceback("Stack trace"))
    3. print(debug.getinfo(1))
    4. print("Stack trace end")
    5. return 10
    6. end
    7. myfunction ()
    8. print(debug.getinfo(1))

    执行以上代码输出结果为:

    1. Stack trace
    2. stack traceback:
    3. test2.lua:2: in function 'myfunction'
    4. test2.lua:8: in main chunk
    5. [C]: ?
    6. table: 0054C6C8
    7. Stack trace end

    在以实例中,我们使用到了 debug 库的 traceback 和 getinfo 函数, getinfo 函数用于返回函数信息的表。

    另一个实例

    我们经常需要调试函数的内的局部变量。我们可以使用 getupvalue 函数来设置这些局部变量。实例如下:

    实例

    1. function newCounter ()
    2. local n = 0
    3. local k = 0
    4. return function ()
    5. k = n
    6. n = n + 1
    7. return n
    8. end
    9. end
    10. counter = newCounter ()
    11. print(counter())
    12. print(counter())
    13. local i = 1
    14. repeat
    15. name, val = debug.getupvalue(counter, i)
    16. if name then
    17. print ("index", i, name, "=", val)
    18. if(name == "n") then
    19. debug.setupvalue (counter,2,10)
    20. end
    21. i = i + 1
    22. end -- if
    23. until not name
    24. print(counter())

    执行以上代码输出结果为:

    1. 1
    2. 2
    3. index 1 k = 1
    4. index 2 n = 2
    5. 11

    在以上实例中,计数器在每次调用时都会自增1。实例中我们使用了 getupvalue 函数查看局部变量的当前状态。我们可以设置局部变量为新值。实例中,在设置前 n 的值为 2,使用 setupvalue 函数将其设置为 10。现在我们调用函数,执行后输出为 11 而不是 3。


    调试类型

    • 命令行调试
    • 图形界面调试

    命令行调试器有:RemDebug、clidebugger、ctrace、xdbLua、LuaInterface - Debugger、Rldb、ModDebug。

    图形界调试器有:SciTE、Decoda、ZeroBrane Studio、akdebugger、luaedit。

  • 相关阅读:
    torch gpu
    C++项目实战-mysql数据库安装及配置
    c++实现的一个定时器实例
    Git-cherry pick的使用
    filter - 常用滤镜效果(毛玻璃、图片阴影、图片褪色)
    DAO 中常见的投票治理方式
    现代物流有哪些特点?
    mysql_config_editor的配置
    Spring全局异常处理你可能不知道的那些事儿(细而全)
    一分钟理解:Blazor WebAssembly 和 Blazor Server 差异性
  • 原文地址:https://blog.csdn.net/m0_66404702/article/details/126262441