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编程

 

posted @ 2016-03-15 20:41  沧海一滴  阅读(4202)  评论(0编辑  收藏  举报