Clion IDE 搭建 Lua 源码调试环境
为什么选择 Clion 呢? 因为 Clion 跨平台,再 Mac, Windows ,Linux 下操作都一样。
1. 下载源码
官网:https://www.lua.org/versions.html
我这下载的是 5.3 的最后一个版本,就是 5.3.6
2. 创建一个可生成 C 可执行文件的项目
源码中的 README 文件中未说明 C 语言使用的版本,我们这里选择 C99,我的调试经验是,这个版本没有问题。
默认有个 main.c 文件,点击工具栏的绿色三角形,如果输出“Hello, World!”,则说明项目创建没有问题。
3. 将源码加入进来
先解压下载的lua-5.3.6.tar.gz
$ tar zxvf lua-5.3.6.tar.gz
$ cd lua-5.3.6
$ ls
Makefile README doc src
源码在 src 目录中,我们把 src 目录下所有的文件都拷贝到第二步 中 main.c 所在的目录中。
4. 修改 CMakeLists.txt 文件
我们把 .c 结尾的文件加入到 CMakeLists.txt 文件中
结果如下:
cmake_minimum_required(VERSION 3.23)
project(lua_debug C)
set(CMAKE_C_STANDARD 99)
add_executable(lua_debug lapi.c lbitlib.c lctype.c ldo.c lgc.c llex.c loadlib.c loslib.c lstring.c ltablib.c luac.c lvm.c
lauxlib.c lcode.c ldblib.c ldump.c linit.c lmathlib.c lobject.c lparser.c lstrlib.c ltm.c lundump.c lzio.c
lbaselib.c lcorolib.c ldebug.c lfunc.c liolib.c lmem.c lopcodes.c lstate.c ltable.c lua.c lutf8lib.c main.c)
5. 修改源码文件
上一步,我们点击绿色的三角形进行运行,是会报错的。
duplicate symbol '_main' in:
提示有多个 main 函数,是因为 lua 源码用自带的编译脚本 Makefile 是会生成 lua 、luac 以及 liblua.a。
我们知道要生成可执行文件,必需要有一个 main 函数作为入口,其中生成 lua 的入口函数 main 在 lua.c 中,生成 luac 的入口函数在 luac.c 中。加入我们这里要调试 lua。则做如下改动。
a. 删掉创建工程时,默认的 main.c 文件,CMakeLists.txt 中的 main.c 也删掉。
b. 将 luac.c 中的 main 函数改名,加入改为 mainc
c. 再点击绿色的箭头,会出现以下内容:
/Users/dengjunxing/Documents/4-gLua/lua-debug/cmake-build-debug/lua_debug
Lua 5.3.6 Copyright (C) 1994-2020 Lua.org, PUC-Rio
>
提示你输入内容。
加入我们输入:print("hello world"),则会有如下输出。
/Users/dengjunxing/Documents/4-gLua/lua-debug/cmake-build-debug/lua_debug
Lua 5.3.6 Copyright (C) 1994-2020 Lua.org, PUC-Rio
> print("hello world")
hello world
>
6. 调试 test.lua 文件
为了不平凡调试时频繁输入,可以讲语句写在文件中,然后将文件作为 lua 命令的参数。
test.lua 文件内容如下:
print("hello world")
修改程序运行参数:
在 cmake-build-debug 目录下,建一个文件,文件名 test.lua,内容就是 print("hello world")。
运行程序,效果如下:
至此,调试环境搭建成功。