You can use the Lua Debugger extension to debug Lua programs with Visual Studio Code.
- You should be able to use
luasocket in a Lua program to be debugged.
- You should be able to use a JSON library in a Lua program to be debugged.
dkjson are recommended, but you can use other JSON libraries whose interfaces are compatible.
- Your code or third party library should not call
In order to debug Lua programs with Lua Debugger, you have to put vscode-debuggee.lua in the program to be debugged.
If you have used mobdebug, you are familiar with it.
Download vscode-debuggee.lua and put it in your project.
Paste the following code into your program to run after all the Lua source code is loaded.
local startResult = require('vscode-debuggee').start()
print('debuggee start result: ', startResult)
Open the folder that contains the program you want to debug in Visual Studio Code,
open the Debug window with
and edit the debugging settings accordingly.
Set the breakpoint by pressing
F9 at the appropriate location in the program to be debugged.
F5 key to start debugging.
Setting to Enter the Debugger When an Error Occurs
Paste the following code at the location where you want to handle the error.
-- Code to actually run
local a = 1 + nil
if debuggee.enterDebugLoop(1, e) then
-- If the debugger is not attached, enter here.
Enabling Debug Commands to be Processed During Execution
To enable the Lua program to respond to commands from the debugger, such as setting a pause or a breakpoint, while running, set the following code to be called at appropriate intervals.
If your project is a game client, you can call it every frame.
You can run Gideros Player directly from Visual Studio Code.
Please refer to the 'launch-gideros' section of the debugging settings.
If you set the debugging setting to
wait and start debugging, Visual Studio Code will wait for a debuggee without executing one.
This is useful if you want to see the string that the debugging target leaves on the console, or if the debugger and the debugging target must be running on different machines.
- Thanks to devCat for his awesome first (single state) version of this