Fork me on GitHub
随笔 - 183  文章 - 10  trackbacks - 0
<2017年12月>
262728293012
3456789
10111213141516
17181920212223
24252627282930
31123456


专注即时通讯及网游服务端编程
------------------------------------
本博收藏大部分文章为转载,并在文章开头给出了原文出处,如有再转,敬请保留相关信息,这是大家对原创作者劳动成果的自觉尊重!!如为您带来不便,请于本博下留言,谢谢配合。

常用链接

留言簿

随笔分类

随笔档案

相册

Awesome

Blog

Book

GitHub

Link

搜索

  •  

积分与排名

  • 积分 - 32454
  • 排名 - 510

最新评论

阅读排行榜

http://www.epubit.com.cn/article/219

ZeroBrane是一个开源的Lua编辑器IDE,自带Lua运行程序和基本的库。最主要的一点,就是ZB可以远程在线的调试,nginx或是openresty上运行的lua脚本。

在编辑方面可以和VIM及插件互补,多去一句,如果花点时间,给VIM按装补全插件,目录插件,tmux, tup,在分屏状态下,vim还是不错的,其实也可以把ZB的远程调试功能,也做插件,让VIM可以进行远程在线调试。

毕竟把系统的Log打的很全,如果可以在线调试,给WEB服务上运行的脚本程序下断点,对调试工作,也大有裨益。

下面就开始介绍,ZB如何进行在线调试。

1.下载ZB。

https://github.com/pkulchenko/ZeroBraneStudio

里面有一个.sh文件,就是在linux上运行ZB的启动程序。因为我们的Lua WEB程序在VPS上,运行ZB需要给VPS安装Desktop,用VNC连上去。可以参考另外一篇文章。

9.jpg

这是运行起来的ZB界面,这个已经进入的调试工和状态。

2.创建一个Lapis工程,使用如下的命令:

lapis new

关于lapis更具体工程创建,也可以参考别一篇文章。

2.png

创建工程后,会自动的创建一些文件,在这些文件中关键的文件有:

nginx.conf(OpenResty的配置文件)

test.lua (我们准备调试的主程序)

mobdebug.lua(ZB开源工程中自带的程序,需要拷贝到当前目录。lualibs/mobdebug)

socket.lua(ZB开源工程中自带的程序,需要拷贝到当前目录。lualibs/ )

3.修改配置文件。

nginx.conf

worker_processes ${{NUM_WORKERS}};

error_log stderr notice;

daemon off;

pid logs/nginx.pid;

events {

  worker_connections 1024;

}

http {

  include mime.types;

  lua_package_path '/usr/home/coding/ide/zerob/lualibs/?/?.lua;/usr/home/coding/ide/zerob/lualibs/?.lua;;';

  lua_package_cpath '/usr/home/coding/ide/zerob/bin/clibs/?.so;;';

  server {

    listen ${{PORT}};

    lua_code_cache ${{CODE_CACHE}};

    location / {

      default_type text/html;

      content_by_lua_file 'test.lua';

    }

    location /static/ {

      alias static/;

    }

    location /favicon.ico {

      alias static/favicon.ico;

    }

  }

}

lua_package_path和 lua_package_cpath,这两个变量是关键的,需要指向你实际ZB的目录。

lapis自动生成的工程配置文件中,location下面使用的是content_by_lua,直接运行lua语句

此处,我们直接引用lua文件,改用content_by_lua_file。

4.创建调试程序。

test.lua

require('mobdebug').start('127.0.0.1')

tmp_str = "Debug"

print("Lua Lapis")

ngx.say("Openresty")

require('mobdebug').done()

可以实现远程调试,很关健的一点就是引用了mobdebug.这个模块,这里的127.0.0.1就是openresty

服务运行地址。

5.起动IDE,执行调试。

我们IDE菜单上的project-> project directory-> choose选择打开,我们这个工程的目录,

选set from current file, 把工程中的test.lua作为当前要处理的文件。

下面关键的一点,在project 菜单里,一定要点选 "Start Debugger Server"。

3.jpg

国为选中后,ZB就会在后面开一端口监听:

4.jpg

注意这个8172就是为调试准备的。

5.jpg

远行WEB服务:lapis server

6.jpg

下面这张图,就回到了最开始的那张图。

7.jpg


我们在浏览器中输入:127.0.0.1:8080

程序进入状态。


我们进入Remote console标签页,进行在线调试,直接使用openresy的库函数ngx.say

8.jpg

单步下一句,把程序中的tmp_str的内容打到,openresty服务器的控制台上。

9.jpg

11.jpg

我们可以通过自己写一个函数,把输出重定向到文件里,看着更方便。

使用shit-enter,还可以进行多行输入代码输入。

我们结束调试,就会看到ngx.say打印的内容出现在网页上。

12.jpg

下篇是如何用ZB在线调试Lua WEB程序。



作者:糖果

PS:转载到其它平台请注明作者姓名及原文链接,请勿用于商业用途。

http://www.lua.ren

致敬英文作者:Paul Kulchenko

http://notebook.kulchenko.com/zerobrane/debugging-openresty-nginx-lua-scripts-with-zerobrane-studio

posted on 2017-07-22 11:45 思月行云 阅读(122) 评论(0)  编辑 收藏 引用 所属分类: Nginx\OR

只有注册用户登录后才能发表评论。
【推荐】超50万行VC++源码: 大型组态工控、电力仿真CAD与GIS源码库
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理