【Lua】ZeroBrane Studio免费专业IDE使用详解

news2024/11/16 17:46:27

▒ 目录 ▒

    • 🛫 问题
      • 描述
      • 环境
    • 1️⃣ IDE界面说明
      • 项目目录
      • 编辑器
      • 控制台窗口
      • 输出窗口
      • 选择解释器
      • 堆栈窗口
      • 监视窗口
      • 大纲窗口
    • 2️⃣ 调试程序
    • 3️⃣ 自定义lua解释器
      • 编译自己的lua解释器
      • 增加interpreters配置文件
      • 重启IDE
    • 4️⃣ 其它IDE比较
      • Lua Editor
      • VSCode
    • 🛬 结论
    • 📖 参考资料

🛫 问题

描述

一直以来,写lua脚本都是做些小项目,也就十几个文件,然后写个批处理合并下文件,将代码编译后使用。
调试方法就是打日志,各种日志。
然而,这样的调试极其不利于长期开发,决定找个IDE,也就是今天的主角:ZeroBrane Studio

环境

版本号描述
文章日期2023-06-
操作系统Win11 - 21H2 - 22000.1335
ZeroBrane Studio1.9.0
lua.exe5.4

1️⃣ IDE界面说明

先上个全图
在这里插入图片描述

项目目录

当前项目目录将显示在“项目”面板中。 项目面板以多种方式为您提供帮助:它提供项目中所有文件的鸟瞰图,突出显示您正在使用的文件(只要它在同一项目中),并允许您通过选择文件名称并按 或双击它来打开文件。
在这里插入图片描述

切换项目目录,有很多方法:

  • 使用下拉列表选择之前使用的项目目录之一,
  • 在项目面板顶部的下拉列表中键入或复制新路径,
  • 转到并设置新目录,或Project | Project Directory | Choose…
  • 转到以将其设置为与当前文件的路径相同的目录。Project | Project Directory | Set From Current File

编辑器

IDE 允许您打开多个程序或文件并同时处理它们。
像其它编辑器一样,支持快捷键:

  • windows下:Ctrl-W
  • MacOS下:Cmd-W

控制台窗口

控制台窗口允许您运行 Lua 代码片段并计算 Lua 表达式的值。
它将在本地控制台之间自动切换,该控制台允许您访问运行 IDE 的 Lua 解释器,以及一个远程控制台,允许您在调试器中停止应用程序时执行代码片段并更改应用程序中的变量值。
在这里插入图片描述

输出窗口

“输出”窗口捕获您运行的程序的输出,以及您在执行这些程序期间可能收到的任何错误和其他消息。
“输出”窗口还用于输入程序可能读取的文本。您将在“输出”窗口中看到一个提示,其中需要输入文本。
在这里插入图片描述

选择解释器

IDE 支持不同的 Lua 引擎,这些引擎在运行或调试时可能需要不同的参数或设置。
这些设置由解释器指定,可以通过转到并从列表中选择所需的解释器来选择解释器。 这不仅设置了应用程序的运行和调试环境,还设置了自动完成、暂存器和其他依赖于引擎的设置。

切换方式:

  • 菜单方式:Project | Lua Interpreter
  • IDE右下角选项
    在这里插入图片描述

堆栈窗口

“堆栈”窗口不仅提供带有函数名称的调用堆栈,而且还显示每个堆栈帧的所有局部变量和上行值。 您甚至可以向下钻取以获取表中各个元素的值。
在这里插入图片描述

监视窗口

“监视”窗口提供了一种在调试器中每次停止后计算变量和表达式的便捷方法。 还可以向下钻取以获取表中各个元素的值。
在这里插入图片描述

大纲窗口

“大纲”窗口提供了一种查看当前文件结构的方法,其中所有函数及其参数按在文件中定义的顺序(默认)或排序列表显示。
在这里插入图片描述

2️⃣ 调试程序

除了运行程序之外,您还可以调试它们,这使您能够暂停它们、检查变量、计算表达式、更改值,然后继续。

  1. 下断点:
    当程序运行时,可以通过转到 来暂停它,这将在下一个执行 lua 命令时停止程序。
  • 通过菜单方式
    在这里插入图片描述
  • 通过工具栏
    在这里插入图片描述
  • 通过快捷键:Ctrl+F9

调试器停止后,可以设置/删除断点(使用 )、单步执行代码(使用 、 和命令)。
在这里插入图片描述

使用“监视”窗口检查变量、使用“堆栈”窗口查看调用堆栈、在控制台中运行 Lua 命令、运行到光标位置 , 并继续执行程序(使用 )。
在这里插入图片描述

3️⃣ 自定义lua解释器

开发中,经常自己导出一些lua接口,怎样使用自己的解释器呢?

编译自己的lua解释器

这个就不详细讲了,可以通过lua api自己导出,也可以通过三方库导出,比如:kaguya

然后将自己的lua解释器放到IDE的bin目录下,如下图是小编自己改的解释器:
在这里插入图片描述

增加interpreters配置文件

以lua54为例,在目录interpreters中增加配置文件luadeb54.lua
文件内容为

dofile 'interpreters/luabase.lua'
local interpreter = MakeLuaInterpreter(5.464, ' 5.464')
interpreter.skipcompile = true
return interpreter

重启IDE

最后重启IDE即可使配置生效。

4️⃣ 其它IDE比较

Lua Editor

  • 优点:支持简体中文,无需专门配置环境,图形化操作较为完善,且启动速度快,运行调试上对初学者极为友好
  • 缺点:这个是商业闭源软件,十几年前就已在github停止更新了,启动时会出现浏览器弹窗。
    在这里插入图片描述

VSCode

  • 优点:有各种第三方插件,生态完善
  • 缺点:对既不熟悉Lua也不熟悉VSCode的初学者来说(其稍微进行点操作就卡的不行这点更是对初学者信心的极大打击),快速上手有不小的难度,自定义成适合Lua跑的状态需要费点心思,但熟悉以后要在VSCode中跑lua会相当顺手。

推荐教程(上手VSCode运行调试Lua代码必看):《Visual Studio Code -> VSCode 开发环境搭建 ---- Lua 开发环境搭建 及 代码运行(code runner 插件)https://blog.csdn.net/yanwennian/article/details/103480938》

🛬 结论

这里就说下ZeroBrane Studio的优势吧。

  • 可以调试了,能查看各种堆栈、局部变量等,十分方便定位问题。
  • 支持远程调试,厉害了。
  • 支持指定不同的lua解释器,包含各种游戏框架的(LÖVE, Corona, Moai, Gideros, Marmalade Quick, Cocos2d-x)。
  • 跨平台(Windows、macOS 和 Linux)
  • 代码提示(函数、关键字和自定义 API )
  • 交互式控制台,用于通过本地和远程执行来测试Lua代码片段
  • 本身开源,可以作为学习使用
  • IDE本身通过lua开发,含有大量学习代码
  • 支持各种开发库,不用重复造轮子:https://github.com/pkulchenko/ZeroBranePackage

还需要说一点是,开发过程中,要使用英文路径,否则会报错的。

📖 参考资料

  • 官方文档: https://studio.zerobrane.com/documentation
  • 【踩坑记录】三款Lua IDE工具对比 https://blog.csdn.net/Seekladoom/article/details/125176936
  • 支持开发库:https://github.com/pkulchenko/ZeroBranePackage

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/706064.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

精密电阻的丝印识别方法

在PCB上经常会出现一些精密的电阻丝印和普通的电阻的丝印识别方式不太一样,比如图1所示。 图1 这种电阻的丝印主要是由两部分组成,第一部分是两个数字,第二部分是一个字母,电阻的阻值的计算就是根据这这个丝印编码。例如图2中的丝…

css中鼠标悬停和点击触发样式变换(:hover和:active)

效果 代码 /*hover--光标(鼠标指针)悬停在元素上时触发*/ .el-card:hover{background: #f5f5f6; } /*active--按下按键和松开按键之间的时间触发*/ .el-card:active{background: #e0dfdf; }

Linux--管道文件:|

作用: 传输资源,你现在可以单纯的把资源看作是数据 》管道的作用是传导数据 构成:入口与出口 存储: 内存级的文件,没有在磁盘上!

Emacs之sr-speedbar替代neotree显示目录(一百一十六)

简介: CSDN博客专家,专注Android/Linux系统,分享多mic语音方案、音视频、编解码等技术,与大家一起成长! 优质专栏:Audio工程师进阶系列【原创干货持续更新中……】🚀 人生格言: 人生…

【Linux进程】进程优先级和其他概念 {查看进程优先级,PRI和NI,修改进程优先级;竞争性,独立性,并发和并行,进程上下文}

进程优先级和其他概念 一、进程优先级 1.1 基本概念 什么是优先级? 进程的优先权(priority)就是用来确定CPU资源分配的先后顺序的。进程的优先级是调度器调度进程到CPU执行的重要指标。 为什么要存在优先级? 由于CPU资源有限…

注册登录账号系统

目录 前言 一、项目介绍 二、项目分析 1.框架介绍 框架流程图:​ 板块分析: 前提: (1)注册板块 (2)登录板块 (3)main方法主板块 2.实操展示 (1&#x…

并发List:CopyOnWriteArrayList

CopyOnWriteArrayList 适合写多读少 介绍 JUC包中的并发List只有CopyOnWriteArrayList。CopyOnWriteArrayList是一个线程安全的ArrayList,使用了写时复制策略,对其进行的修改操作都是在底层的一个复制的数组上进行的。 CopyOnWriteList 实现的接口和 Ar…

async异步任务_同步任务选项

需要先看完上文:async创建异步任务_御坂美琴1的博客-CSDN博客 让类里面的一个成员函数当作线程的参数。 async里面有三个参数,一个是成员函数的地址,第二个是 类,第三个是传入的参数。 接下来介绍async的同步线程创建。 asy…

C++类Day2,作业思维

1.昨天的基础上完成运算符重载 #include <iostream> using namespace std;class Complex { private:int real;int vir; public://无参构造Complex(){cout << "无参构造" << endl;}//有参构造Complex(int a,int b):real(a),vir(b){cout << &q…

Ubuntu18.04本地部署Stable-Diffusion-webui绘画

记录Ubuntu下安装Stable-Diffusion-webui&#xff0c;比较简单,以供参考。 系统&#xff1a;Ubuntu 18.04.4 LTS 内存&#xff1a;40G 显卡&#xff1a;32G 硬盘&#xff1a;500G 一、安装cuda 支持安装的cuda版本可以用nvidia-smi命令查看&#xff1a; ----------------…

Tomcat的优化及多实例部署

文章目录 一.Tomcat的优化1.tomcat启动速度优化——random2.Tomcat配置文件参数优化2.1 常用的优化相关参数2.2 优化的配置文件 二.Tomcat多实例部署1.为什么会有tomcat多实例部署2.多实例部署图示3.多实例部署的配置3.1 安装JDK3.2 安装启动Tomcat3.3 配置 tomcat 环境变量3.4…

筹码分布图高级用法——历史换手衰减系数自动计算公式

在使用筹码分布图时&#xff0c;很多人习惯于采用软件的默认设置&#xff0c;然而默认设置不一定能满足我们的要求。今天将向大家介绍筹码分布图的高级用法——历史换手衰减系数&#xff0c;并编写历史换手衰减系数自动计算公式。有些网友认为通过修改衰减系数&#xff0c;可以…

【远程控制】向日葵连接Ubuntu黑屏

Ubuntu 远程黑屏 Ubuntu 22.04 方法 1&#xff1a;切换桌面工作模式方法 2&#xff1a;安装 lightdm 插件来渲染界面客服工单回答 Ubuntu 22.04 方法 1&#xff1a;切换桌面工作模式 进入到登录页 点击用户名 点击右下角&#xff0c;切换桌面工作模式为Ubuntu on xorg即可 …

基于Python+MySQL所写的音乐网管理系统

点击以下链接获取源码资源&#xff1a; https://download.csdn.net/download/qq_64505944/87971719?spm1001.2014.3001.5503 《甜橙音乐网》程序使用说明 在虚拟环境下输入命令“python manage.py runserver”启动项目&#xff0c;启动成功后&#xff0c;访问“http://127.0…

x264 deblock filter 代码解读

在x264源码里&#xff0c;void x264_frame_deblock_row( x264_t *h, int mb_y )函数中定义了如下的宏片段&#xff0c;这段代码旨在完成对MB的deblocking 操作&#xff0c;其中针对edge 取不同的值的时候&#xff0c;有的做deblocking&#xff0c; 有的不做&#xff0c;看这部分…

计算机网络的89个核心概念

主机&#xff1a;计算机网络上任何一种能够连接网络的设备都被称为主机或者说端系统&#xff0c;比如手机、平板电脑、电视、游戏机、汽车等&#xff0c;随着 5G 的到来&#xff0c;将会有越来越多的终端设备接入网络。 通信链路&#xff1a;通信链路是由物理链路&#xff08;…

[nexus]基于nexus搭建npm仓库及上传插件到仓库

目录 环境信息搭建npm仓库创建存储位置创建proxy仓库创建hosted仓库创建group仓库配置域 下载及上传登录下载上传 环境信息 nexus: 3.29.2-02node: v14.18.2npm: 6.14.15 搭建npm仓库 创建存储位置 这一步不是必须的&#xff0c;可以跟之前创建的复用 依次打开 [设置] ->…

【Docker】Docker的简介安装以及使用Docker安装Mysql案例

Docker docker概述 Docker是一个开源的应用容器引擎诞生于2013年初&#xff0c;基于Go语言实现&#xff0c;dotClou公司出品&#xff08;后改名为Docker inc&#xff09;Docker可以让开发者打包他们的应用以及依赖包到一个轻量级、可以直接的容器中&#xff0c;然后发布到任何…

测试的流程

目录&#xff1a; 测试流程价值与体系测试计划业务架构分析思路bug基本概念bug处理流程测试流程管理jira系统-测试用例管理测试流程管理 jira 系统-Bug管理测试总结业务架构分析工具plantuml测试流程管理jira系统-测试流程定制测试流程管理 jira 系统-Bug管理流程定制 1.测试…

HTML5新特性总结

新增语义化标签 新增了很多语义化标签&#xff0c;如header、footer、nav、article、section(页面中的某段文字&#xff0c;或文章中的某段文字)、aside、main 其中article标签里可以包含多个section&#xff1b; section强调的是分段或分块&#xff0c;若想将一块内容分成几…