1. 确认安装插件
在使用vscode调试lua时,需要使用插件才能进行断点调试。因此,需要确认是否安装了插件。在vscode左侧的侧边栏中选择“扩展”,搜索“Lua”,如果没有安装则需要点击“安装”按钮进行安装。
1.1 可能遇到的问题
有时候由于网络原因,插件安装可能会一直在等待状态,或者安装失败。这时候需要检查自己的网络连接,或者重试安装。如果依旧无法解决问题,可以尝试手动下载插件并进行安装。手动下载的插件地址可以在vscode marketplace中找到。
2. 确认任务配置
在vscode中,使用F5调试时,需要任务的配置才能进行程序的运行。因此需要确认任务是否配备成功。这里以Windows系统为例。
2.1 确认launch.json文件
使用vscode打开要调试的lua文件所在目录,按F5,vscode会自动在.vscode目录下生成一个launch.json文件。这个文件中需要确认以下几个位置的参数是否正确。
{
"version": "0.2.0",
"configurations": [
{
"name": "Attach",
"type": "lua",
"request": "attach",
"port": 21110
},
{
"name": "Launch",
"type": "lua",
"request": "launch",
"program": "${workspaceFolder}/main.lua",
"cwd": "${workspaceFolder}",
"stopOnEntry": false,
"args": [],
"runtimeExecutable": "lua",
"runtimeArgs": [
"-e",
"LUA_PATH=[[\"${workspaceFolder}/?.lua\"]];package.path=LUA_PATH..[[\";\"]] .. package.path;print(package.path)",
"-i"
]
},
{
"name": "Launch WEB",
"type": "lua",
"request": "launch",
"program": "${workspaceFolder}/main.lua",
"cwd": "${workspaceFolder}",
"stopOnEntry": false,
"args": ["-web"],
"runtimeExecutable": "lua",
"runtimeArgs": [
"-e",
"LUA_PATH=[[\"${workspaceFolder}/?.lua\"]];package.path=LUA_PATH..[[\";\"]] .. package.path;print(package.path)",
"-i"
]
}
]
}
其中,“name”是任务的名称,可以自定义;“type”是任务类型,需要设置成“lua”;“request”是请求类型,需要设置成“launch”或“attach”,分别表示启动和调试已经启动的程序;“program”即指定需要启动或调试的程序,需要正确指定相对路径;“runtimeExecutable”即指定程序的运行环境,需要指定为“lua”。
2.2 可能遇到的问题
如果任务配备失败,在运行任务时可能会报错,比如“Cannot launch debug target (noCoreDump)”等,这些错误需要具体看错误提示信息来解决。但是,一般来说是由于任务配置不正确或者环境配备不足导致的。
3. 确认断点位置
在启动程序前,需要设置断点。如果程序一直没有进入调试模式,那么很可能是断点设置有问题。这里有一些常见的断点设置错误。
3.1 没有选中需要调试的文件
在vscode中,需要先选择需要调试的文件后,才能进行断点的设置。如果没有选中这个文件,或者选中的文件不是要调试的文件,那么就需要重新选择文件再进行断点设置。
3.2 断点设置在了注释或者空白行上
在设置断点时,需要注意不能把断点设置在注释或者空白行上。如果把断点设置在了这些位置上,那么程序一般不会进入断点调试模式。
3.3 断点设置在了不能进入的代码块中
有时候代码块是不会被执行的,这时候断点就不会在这里触发。比如在一个while循环中,如果循环条件不满足,那么这个代码块就不会被执行。因此,在这个代码块中设置的断点,是不会触发的。
4. 使用断点调试
当启动程序后,需要进入断点调试模式。这里简要介绍一下常用的断点调试命令。
4.1 启动调试
按下F5或点击vscode左侧debug菜单,选择“启动调试”,即可启动程序进程。程序进入预设的第一个断点并暂停。
4.2 进行单步调试
在程序暂停状态下,可以按下F10进行单步调试,即逐行执行代码。需要注意,如果单步执行的代码跨过了一个函数的边界,那么就需要进入下一级函数,这时候可以按下F11。
4.3 查看变量值
在调试模式下,可以在代码左侧的代码行号位置,点击来设置断点。当程序执行到这个断点时,就可以查看对应的变量值。比如,在程序中添加断点:
local a = 1
local b = 2
print(a)
a = a + b
print(a)
当程序执行到print(a)时,就可以看到a的值是1。
4.4 继续执行程序
在调试模式下,当需要放弃对某个断点的调试时,可以按下F5继续执行程序。如果某个条件不满足,需要跳过该断点直接执行程序,可以在breakpoint处右键点击,然后设置“条件”。
5. 小结
通过本文,我们详细介绍了如何使用vscode调试lua程序,包括确认安装插件、确认任务配置、确认断点位置和使用断点调试等环节。希望本文能够帮助到大家,在开发过程中更好地使用vscode进行调试。