登录
Lua Debugger
分类:工具软件 访问:37 下载量:0

软件介绍

更新时间:2025-04-28

新的介绍内容:

Lua Debugger

Lua Debugger:在Visual Studio Code中调试Lua程序的终极指南

Lua Debugger扩展为Lua开发者提供了一个强大的工具,使您能够在Visual Studio Code中高效调试Lua程序。本文将为您详细介绍如何使用Lua Debugger,包括使用要求、配置步骤、调试连接方法以及远程调试技巧。

使用要求:

  • 在要调试的Lua程序中能够使用luasocket。
  • 在要调试的Lua程序中能够使用JSON库。推荐使用cjson和dkjson,但也可使用其他兼容接口的JSON库。
  • 您的代码或第三方库不应调用debug.sethook。

配置步骤:

要使用Lua Debugger调试Lua程序,您需要将vscode-debuggee.lua文件放入要调试的程序中。如果您之前使用过mobdebug,对此应该已经很熟悉。

调试连接方法:

  1. 下载vscode-debuggee.lua并将其放入您的项目中。
  2. 在所有Lua源代码加载后,将以下代码粘贴到您的程序中运行。根据您使用的JSON库,您可能需要相应地修改代码。
local json = require 'dkjson'
local debuggee = require 'vscode-debuggee'
local startResult, breakerType = debuggee.start(json)
print('debuggee start ->', startResult, breakerType)
  1. 在Visual Studio Code中打开包含要调试程序的文件夹,按Ctrl-Shift-D打开调试窗口,并相应地编辑调试设置。
  2. 在要调试的程序中按F9在适当位置设置断点。
  3. 按F5键开始调试。

错误发生时进入调试器的设置:

在想要处理错误的位置粘贴以下代码:

xpcall(
    function()
        -- 实际运行的代码
        local a = 1   nil
    end,
    function(e)
        if debuggee.enterDebugLoop(1, e) then
            -- ok
        else
            -- 如果调试器未连接,则进入此处。
            print(e)
            print(debug.traceback())
        end
    end)

在执行过程中启用调试命令处理:

为了使Lua程序在运行时能够响应调试器的命令,如设置暂停或断点,请在适当的时间间隔调用以下代码。如果您的项目是游戏客户端,可以在每一帧调用它。

debuggee.poll()

Gideros支持:

您可以直接从Visual Studio Code运行Gideros Player。请参考调试设置中的'launch-gideros'部分。

远程调试:

如果您将调试设置设置为等待并开始调试,Visual Studio Code将等待调试目标而不执行一个。这在您想查看调试目标在控制台上留下的字符串,或调试器和调试目标必须在不同机器上运行时非常有用。

OP_HALT补丁:

基本上,vscode-debuggee.lua会降低Lua程序的运行速度,因为它使用debug.sethook实现断点机制。通过对Lua VM应用一个简单的补丁,可以克服这种性能下降。

下载:

  • lua 5.1.5:补丁,代码
  • lua 5.3.4:补丁,代码

致谢:

  • OP_HALT补丁在很大程度上依赖于Lua邮件列表中提到的工作。感谢Dan Tull。
  • 我们从mobdebug中获得了如何将调试目标连接到调试器的想法。感谢Paul Kulchenko。
  • 感谢Google Translator翻译本文!

vscode-debuggee.lua参考:

debuggee.start(jsonLib, config)

与调试器连接。jsonLib是一个包含.encode和.decode函数的JSON库。Config.onError是在vscode-debuggee模块中发生错误时接收的回调。Config.connectTimeout、config.controllerHost和config.controllerPort是远程调试的设置。如果config.redirectPrint为true,则拦截print调用并在Visual Studio Code输出窗口中显示。如果您希望Gideros在断点之前调用print的结果,请使用此项。

debuggee.start返回两个值。如果正常连接到调试器,第一个返回值为true,否则为false。如果在当前Lua VM中应用了OP_HALT补丁,第二个返回值为'halt',否则为'pure'。

debuggee.poll()

处理排队的调试命令并立即返回。

debuggee.enterDebugLoop(depth[, what])

停止运行Lua程序并从当前位置开始调试。depth指定堆栈的相对深度,以指示调试器当前运行的位置。0表示调用debuggee.enterDebugLoop的地方,1表示浅一层。what是您在开始调试时想要传递给Visual Studio Code的消息。

debuggee.print(category, ...)

在vscode调试控制台上打印文本。category使打印文本着色,您可以选择log、warning或error。

本站所有资源都是由网友投稿发布,或转载各大下载站, 请自行检测软件的完整性!

本站所有资源仅供学习与参考,请勿用于商业用途,否则 产生的一切后果将由您自己承担!

如有侵权请联系我们删除下架,联系方式:study_golang@163.com

最新教程

查看更多
  • Golang云原生架构师课程
    Golang云原生架构师课程
    Go是一门并发支持、垃圾回收的编译型系统编程语言;本课程转载自哔哩哔哩:https://www.bilibili.com/video/BV1Mh411M7A
  • MySQL数据管理之备份恢复案例解析视频教程
    MySQL数据管理之备份恢复案例解析视频教程
    《MySQL数据管理之备份恢复案例解析视频教程》MySQL是一个开放源码的小型关联式数据库管理系统,目前MySQL被广泛地应用在Internet上的中小型网站中。由于其体积小、速度快、总体拥有成本低,尤其是开放源码这一特点,许多中小型网站为了降低网站总体拥有成本而选择了MySQL作为网站数据库。
  • MySQL索引优化解决方案
    MySQL索引优化解决方案
    本套课程是根据MySQL索引的设计理念与数据结构、索引使用场景、索引分类、索引运用场景、索引性能分析、查询优化、MySQL索引的慢查询等组成,主要讲述了MySQL索引优化的解决方案,非常适合有MySQL使用基础或者有一定工作经验的同学。课程讲解了解决大数量查询慢的问题、如何编写一个高效的SQL、查询语句应该如何优化、索引的实现原理是什么、索引又应该如何优化...等诸多SQL索引优化的难点和面试点。
  • 极客学院Docker视频教程
    极客学院Docker视频教程
    Docker是PaaS提供商dotCloud开源的一个基于LXC的高级容器引擎,源代码托管在Github上,基于go语言并遵从Apache2.0协议开源。Docker自2013年以来非常火热,无论是从github上的代码活跃度,还是各大厂商的支持,都使Docker成为了时下最受关注的技术,甚至微软都声称在下一代WindowsServer中集成对Docker的支持。所以我们收集了《极客学院Docke
  • Golang进阶实战编程
    Golang进阶实战编程
    本课程是在《Go语言基础视频》基础之上录制的,是Go语言基础的后半部分。包括包的管理,IO操作,Go语言最大的亮点:高并发,goroutine,channel,反射等。本视频主要为了帮助Go语言的初学者,从零到一的快速入门。学完本套课程,可以学会如果通过包管理Go项目,并发模型,以及并发实现,channel通道如何传递数据,反射等等。
  • JavaScript极速入门
    JavaScript极速入门
    本套课程将帮助大家迅速掌握JavaScript这门高端的、动态的、弱类型编程语言。知识点简单明了,让你学习0压力,适合新手观看学习......