最近基於業務需求,學習了如何使用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")
2. 服務端 test3:
- 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.*.*);
http://blog.csdn.net/lpcz2010/article/details/50722048
(1)lua/groovy的語法差異
(2)編輯lua腳本常用的IDE介紹
(3)lua腳本的特色。以及Lua的OO編程