I\'m searching for the best way to debug Lua remotely, ( like from a web browser ).
I saw RemDebug, but the last project update was done on 2006. It works with Lua 5.0 a
I'm not sure if this is right. Hope it helps though:
Source: http://www.keplerproject.org/remdebug/example.html
This is an example of a debugging session of the following script (test.lua):
1 require"remdebug.engine"
2
3 remdebug.engine.start()
4
5 local tab = {
6 foo = 1,
7 bar = 2
8 }
9
10 print("Start")
11
12 function bar()
13 print("In bar 1")
14 print("In bar 2")
15 end
16
17 for i = 1, 10 do
18 print("Loop")
19 bar()
20 tab.foo = tab.foo * 2
21 end
22
23 print("End")
First run the RemDebug controller:
% lua50 controller.lua Lua Remote Debugger Run the program you wish to debug At this moment you can run your target program (in another window):
% lua50 test.lua Now go back to the window where you ran controller.lua (this assumes you are running test.lua inside C:\development\kepler on a Windows system):
Paused at file C:/development/kepler/test.lua Type 'help' for commands
basedir C:/development/kepler/ New base directory is C:/development/kepler/ basedir C:/development/kepler/ step Paused at file C:/development/kepler/test.lua line 6 over Paused at file C:/development/kepler/test.lua line 7 over Paused at file C:/development/kepler/test.lua line 10 over Paused at file C:/development/kepler/test.lua line 15 setb test.lua 19 run You can change to the application window anytime to see its output. Back to the debugger session:
Paused at file C:/development/kepler/test.lua line 19
run Paused at file C:/development/kepler/test.lua line 19 eval tab.foo 2 eval tab.bar 2 exec old_tab = tab nil exec tab = 2 nil eval tab 2 exec tab = old_tab nil eval tab.foo 2 run Paused at file C:/development/kepler/test.lua line 19 eval tab.foo 4 delb test.lua 19 setw tab.foo == 32 Inserted watch exp no. 1 run Paused at file C:/development/kepler/test.lua line 17 (watch expression 1: [tab.foo = 32]) eval tab.foo 32 delw 1 run Program finished
I found Hillin's Remote Lua Debugger 1.2.0.218
I was not sure if you need to debug lua remotely or ask about doing so over HTTP; I'm answering about the former and am not aware of a way to do so over HTTP.
Both LuaEdit and Decoda allow you to connect remotely to a running lua script (both on a different process on the same machine and on a remote machine).
Decoda can do magic and do so for a lua VM without requiring any change to the VM; with LuaEdit you need to create the VM in a specific way, using a provided DLL or library.
I have developed a new debugger based on RemDebug (MobDebug) with new commands, new features, bugfixes, and integration with IDEs.
MobDebug is based on TCP interaction between the client (debugee) and the server (controller). This is also the case for RemDebug and most other remote debuggers. You might be able to run on top of something else (like WebSockets or HTTP), but you still need to be able to run coroutines and debug hook to control the application being debugged.
The architecture of the debugging process is quite simple:
It may be possible to mimic the existing socket interface (as it's only using connect/send/receive and select/timeout to abort the application) and reuse most of the library. I'm still not sure why you'd want to run this in a browser though as you can run the application on anything that supports TCP already (I have a working prototype debugging an application running on a mobile device from my desktop).
Don't know for web-browser debugging (the idea seems weird to me, maybe you can detail why you would need a web-browser debugger ?)
For a standalone debugger however, I've written a remote debugger with GUI : http://cushy-code.com/grld
It communicates with the debugged program with the socket API, so any network connection will do, no need for HTTP.
Hope this helps.