在vscode中按Ctrl+P,输入
ext install lua-debug
launch模式,模拟lua.exe的行为来执行你的代码,调试器直接加载lua脚本。优点是直接可用不需要自己准备lua的执行环境。
launch模式,启动一个进程(比如lua.exe或者其他动态链接了luadll的exe)并调试。如果需要调试的目标和lua.exe的行为不一致,可以采用这个模式。
attach模式,调试任意加载了debugger.dll的进程。
如果你只是使用在本机的远程调试器,你还可以不使用vscode-lua-debug.exe,直接使用vscode连接调试器。只需要加上"debugServer"的参数。例如
"version" : " 0.2.0 " , "configurations" : [ "name" : " attach " , "type" : " lua " , "request" : " attach " , "program" : " " , "stopOnEntry" : false , "cwd" : " ${workspaceRoot} " , "debugServer" : 4278// 可以识别
lua_CFunction f = (lua_CFunction)GetProcAddress(h, "luaopen_debugger");
lua_pushcfunction(L, f);
lua_call(L, 0, 0);
// 不能识别
lua_CFunction f = (lua_CFunction)GetProcAddress(h, "luaopen_debugger");
f(L);
确保debugger.dll在package.cpath的搜索范围内,然后执行以下代码
local dbg = require 'debugger'
dbg:listen('0.0.0.0:4278')
此时调试器会监听4278端口,配置好你的vscode,然后用attach模式启动,调试就会被激活。
调试器初始化之后,并不会阻止lua的继续执行,如果你希望调试器不会错过任何东西,你应该立刻激活调试,并等待vscode连接上来。例如
local dbg = require 'debugger'
dbg:listen('0.0.0.0:4278')
dbg:start()
调试器默认会在32位模式下运行,指定
program
的launch也只支持32位。这意味着你的lua中加载的c模块(dll),和
luadll
参数所给的dll都必须是32位的。如果你想调试64位的lua,可以选择以下的方式:
debugger.dll
。
runtimeExecutable
参数。
runtimeExecutable
里提供的为64位进程时,调试器就会在64位下运行。