lua 遠程調試 【zeroBrane 使用mobdebug】(good轉)


最近基於業務需求,學習了如何使用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:

 

[javascript]  view plain  copy
 
 print?在CODE上查看代碼片派生到我的代碼片
  1. local p = "C:/Program Files (x86)/Lua/5.1/";  
  2. package.cpath = package.cpath..string.format(";?.dll;%sclibs/?.dll;%s;",p,p);  
  3. package.path = package.path..string.format(";?.lua;%slua?.lua;%s;",p,p);  
  4. require('mobdebug').start('127.0.0.1')  
  5.   
  6.   
  7.   
  8.   
  9.   
  10. local tmp_str = "Debug"  
  11. print("1")  
  12. print("2")  
  13. print("3")  
  14. print("4")  
  15. print("Lua Lapis")  

 

 

2. 服務端 test3:

 

 

[javascript]  view plain  copy
 
 print?在CODE上查看代碼片派生到我的代碼片
  1. local mobdebug = require "mobdebug"  
  2. local socket = require "socket"  
  3. local server = socket.bind('*', 8172)  
  4.   
  5. local realprint = print  
  6. -- uncomment the next line if you ONLY want to see debug output  
  7. -- _G.print = function () end  
  8.   
  9. print("Lua Remote Debugger")  
  10. print("Run the program you wish to debug")  
  11.   
  12. local client = server:accept()  


3.服務端 test:

 

 

[javascript]  view plain  copy
 
 print?在CODE上查看代碼片派生到我的代碼片
  1. print("1")  
  2. print("2")  
  3. print("3")  
  4. print("4")  
  5. print("Lua Lapis")  
  6. print("1")  
  7. print("2")  
  8. print("3")  
  9. print("4")  
  10. print("Lua Lapis")  
  11. print("1")  
  12. print("2")  
  13. print("3")  
  14. print("4")  
  15. print("Lua Lapis")  
  16. print("1")  
  17. print("2")  
  18. print("3")  
  19. print("4")  
  20. print("Lua Lapis")  
  21. print("1")  
  22. 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編程

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM