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連上去。可以參考另外一篇文章。
.png)

這是運行起來的ZB界面,這個已經進入的調試工和狀態。
2.創建一個Lapis工程,使用如下的命令:
lapis new
關于lapis更具體工程創建,也可以參考別一篇文章。
.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"。

國為選中后,ZB就會在后面開一端口監聽:

注意這個8172就是為調試準備的。

遠行WEB服務:lapis server

下面這張圖,就回到了最開始的那張圖。

我們在瀏覽器中輸入:127.0.0.1:8080
程序進入狀態。
我們進入Remote console標簽頁,進行在線調試,直接使用openresy的庫函數ngx.say

單步下一句,把程序中的tmp_str的內容打到,openresty服務器的控制臺上。


我們可以通過自己寫一個函數,把輸出重定向到文件里,看著更方便。
使用shit-enter,還可以進行多行輸入代碼輸入。
我們結束調試,就會看到ngx.say打印的內容出現在網頁上。

下篇是如何用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
思月行云 閱讀(2034)
評論(0) 編輯 收藏 引用 所屬分類:
Nginx\Openresty