http://www.epubit.com.cn/article/219
ZeroBrane是一個開源的Lua編輯器IDE,自帶Lua運行程序和基本的庫。最主要的一點,就是ZB可以遠(yuǎn)程在線的調(diào)試,nginx或是openresty上運行的lua腳本。
在編輯方面可以和VIM及插件互補,多去一句,如果花點時間,給VIM按裝補全插件,目錄插件,tmux, tup,在分屏狀態(tài)下,vim還是不錯的,其實也可以把ZB的遠(yuǎn)程調(diào)試功能,也做插件,讓VIM可以進行遠(yuǎn)程在線調(diào)試。
畢竟把系統(tǒng)的Log打的很全,如果可以在線調(diào)試,給WEB服務(wù)上運行的腳本程序下斷點,對調(diào)試工作,也大有裨益。
下面就開始介紹,ZB如何進行在線調(diào)試。
1.下載ZB。
https://github.com/pkulchenko/ZeroBraneStudio
里面有一個.sh文件,就是在linux上運行ZB的啟動程序。因為我們的Lua WEB程序在VPS上,運行ZB需要給VPS安裝Desktop,用VNC連上去。可以參考另外一篇文章。
.png)

這是運行起來的ZB界面,這個已經(jīng)進入的調(diào)試工和狀態(tài)。
2.創(chuàng)建一個Lapis工程,使用如下的命令:
lapis new
關(guān)于lapis更具體工程創(chuàng)建,也可以參考別一篇文章。
.png)

創(chuàng)建工程后,會自動的創(chuàng)建一些文件,在這些文件中關(guān)鍵的文件有:
nginx.conf(OpenResty的配置文件)
test.lua (我們準(zhǔn)備調(diào)試的主程序)
mobdebug.lua(ZB開源工程中自帶的程序,需要拷貝到當(dāng)前目錄。lualibs/mobdebug)
socket.lua(ZB開源工程中自帶的程序,需要拷貝到當(dāng)前目錄。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,這兩個變量是關(guān)鍵的,需要指向你實際ZB的目錄。
lapis自動生成的工程配置文件中,location下面使用的是content_by_lua,直接運行l(wèi)ua語句
此處,我們直接引用lua文件,改用content_by_lua_file。
4.創(chuàng)建調(diào)試程序。
test.lua
require('mobdebug').start('127.0.0.1')
tmp_str = "Debug"
print("Lua Lapis")
ngx.say("Openresty")
require('mobdebug').done()
可以實現(xiàn)遠(yuǎn)程調(diào)試,很關(guān)健的一點就是引用了mobdebug.這個模塊,這里的127.0.0.1就是openresty
服務(wù)運行地址。
5.起動IDE,執(zhí)行調(diào)試。
我們IDE菜單上的project-> project directory-> choose選擇打開,我們這個工程的目錄,
選set from current file, 把工程中的test.lua作為當(dāng)前要處理的文件。
下面關(guān)鍵的一點,在project 菜單里,一定要點選 "Start Debugger Server"。

國為選中后,ZB就會在后面開一端口監(jiān)聽:

注意這個8172就是為調(diào)試準(zhǔn)備的。

遠(yuǎn)行WEB服務(wù):lapis server

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

我們在瀏覽器中輸入:127.0.0.1:8080
程序進入狀態(tài)。
我們進入Remote console標(biāo)簽頁,進行在線調(diào)試,直接使用openresy的庫函數(shù)ngx.say

單步下一句,把程序中的tmp_str的內(nèi)容打到,openresty服務(wù)器的控制臺上。


我們可以通過自己寫一個函數(shù),把輸出重定向到文件里,看著更方便。
使用shit-enter,還可以進行多行輸入代碼輸入。
我們結(jié)束調(diào)試,就會看到ngx.say打印的內(nèi)容出現(xiàn)在網(wǎng)頁上。

下篇是如何用ZB在線調(diào)試Lua WEB程序。
作者:糖果
PS:轉(zhuǎn)載到其它平臺請注明作者姓名及原文鏈接,請勿用于商業(yè)用途。
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
思月行云 閱讀(2049)
評論(0) 編輯 收藏 引用 所屬分類:
Nginx\Openresty