最近基于业务需求,学习了如何使用zeroBrane这个IDE实现C/S 模式下的 lua远程调试,废话不多,上效果图:
----------------------------------------------------------------------华丽分割线---------------------------------------------------------
操作流程:zeroBrane project -> start debugger server
启动 socket server 所在文件,启动监听。
在另一个目录,启动 socket client 所在文件,IDE zeroBrane 会立即唤醒,见上图2,被动打开 server所在目录,同名文件(即使文件内容不同),并默认停在第11行。【因为客户端的有效断点最小就在第11行】
试着step over 一下,你发现stack栏出现客户端调试信息。对的,这就是远程调试。
----------------------------------------------------------------------华丽分割线---------------------------------------------------------
实现流程:
1.在任意盘新建一个文件夹,里面放入client lua 文件,此处是test.lua.
问题:我此处还拖入了mobdebug文件,mobdebug文件里,require了socket,显示找不到。所以我在test文件里修改了package path,改了之后其实mobdebug
文件可有可无了,新改的package path里包涵了mobdebug路径。
2.同上再新建,放入server 文件。此处有 test3.lua 启动服务器 ,test.lua 供 客户端 test.lua 同步唤醒。
----------------------------------------------------------------------华丽分割线---------------------------------------------------------
3份文件代码:(虽然不复杂,但谁让我敬业)
1. 客户端 的 test:
local p = "C:/Program Files (x86)/Lua/5.1/";
package.cpath = package.cpath..string.format(";?.dll;%sclibs/?.dll;%s;",p,p);
package.path = package.path..string.format(";?.lua;%slua?.lua;%s;",p,p);
require('mobdebug').start('127.0.0.1')
local tmp_str = "Debug"
print("1")
print("2")
print("3")
print("4")
print("Lua Lapis")
local mobdebug = require "mobdebug"
local socket = require "socket"
local server = socket.bind('*', 8172)
local realprint = print
-- uncomment the next line if you ONLY want to see debug output
-- _G.print = function () end
print("Lua Remote Debugger")
print("Run the program you wish to debug")
local client = server:accept()
3.服务端 test:
print("1")
print("2")
print("3")
print("4")
print("Lua Lapis")
print("1")
print("2")
print("3")
print("4")
print("Lua Lapis")
print("1")
print("2")
print("3")
print("4")
print("Lua Lapis")
print("1")
print("2")
print("3")
print("4")
print("Lua Lapis")
print("1")
print("2")
2016年2月25日17:22:36 补充:
1.测试手机设备lua代码:
如果传递过来的路径类似于:apphome:core/app.lua 这就需要转换成 pc认识的路径;(如图:记住位置,因为我加了点注释,所以是第692行附近)
2.这个模式是c/s模式,一个s多个c,再你每个要调的lua文件之前都要加上 require("mobdebug").start("192.168.*.*);