openresty lua 調試 (圖文死磕)
文章很長,而且持續更新,建議收藏起來,慢慢讀!瘋狂創客圈總目錄 博客園版 為您奉上珍貴的學習資源 :
免費贈送 :《尼恩Java面試寶典》 持續更新+ 史上最全 + 面試必備 2000頁+ 面試必備 + 大廠必備 +漲薪必備
免費贈送 經典圖書:《Java高并發核心編程(卷1)加強版》 面試必備 + 大廠必備 +漲薪必備 加尼恩免費領
免費贈送 經典圖書:《Java高并發核心編程(卷2)加強版》 面試必備 + 大廠必備 +漲薪必備 加尼恩免費領
免費贈送 經典圖書:《Java高并發核心編程(卷3)加強版》 面試必備 + 大廠必備 +漲薪必備 加尼恩免費領
免費贈送 經典圖書:《尼恩Java面試寶典 最新版》 面試必備 + 大廠必備 +漲薪必備 加尼恩免費領
免費贈送 資源寶庫: Java 必備 百度網盤資源大合集 價值>10000元 加尼恩領取
推薦: 地表最強 開發環境 系列
| 工欲善其事 必先利其器 |
|---|
| 地表最強 開發環境: vagrant+java+springcloud+redis+zookeeper鏡像下載(&制作詳解) |
| 地表最強 熱部署:java SpringBoot SpringCloud 熱部署 熱加載 熱調試 |
| 地表最強 發請求工具(再見吧, PostMan ):IDEA HTTP Client(史上最全) |
| 地表最強 PPT 小工具: 屌炸天,像寫代碼一樣寫PPT |
| 無編程不創客,無編程不創客,一大波編程高手正在瘋狂創客圈交流、學習中! 找組織,GO |
1 ZeroBrane 簡介
ZeroBrane Studio已被用于調試各種Lua引擎 – 游戲框架(如Corona,Gideros,Moai,Love2d),家庭自動化設備,wirehark 腳本,Adobe Lightroom插件等 – 但是已經有幾種Lua環境沒有嘗試過。其中一個是OpenResty / Nginx Lua腳本。OpenResty是一個基于nginx的網絡應用服務器,一個非常快速的Web服務器,它提供了具有各種后端(Redis,Memcached,MySQL,HTTP服務器等)的非阻塞IO,并支持Lua作為其腳本語言。
ZeroBrane的特點:
-
小巧,可移植,開源和跨平臺(Windows,macOS和Linux);
-
自動完成功能,關鍵字和自定義API;
-
110多種語言和文件格式的語法高亮和折疊;
-
具有自動刷新功能的項目視圖,能夠從列表中隱藏文件和目錄;
-
交互式控制臺,用于測試本地和遠程執行的Lua代碼片段;
-
集成調試器,支持本地和遠程調試,包括跨平臺和設備上調試;
-
使用Lua, L?VE, Gideros, Moai, Corona,GSL-Shell和其他Lua引擎進行實時編碼 ;
-
多語言支持,翻譯為法語,西班牙語,俄語,德語,中文,世界語,意大利語,保加利亞語和巴西葡萄牙語語言和文檔,以添加您自己的語言;
-
50+擴展包在包庫 ;
-
模糊搜索的文件,符號,和庫函數,函數的輪廓,和更多。
? 瘋狂創客圈的網盤,也提供本實例配置的版本下載。 瘋狂創客圈網盤入口

2 調試的環境介紹
包括以下三個方面:
-
openresty 的環境
-
project工程的環境
-
ZeroBrane Studio 的環境
-
lua 調試依賴包的配置
2.1 openresty 的環境
這里使用的是 openresty-1.13.6.2-win32 ,具體的安裝和啟動腳本,請參見 下面的博客:
但是,一定要換成32位的版本。 然后,修改 openresty-start.bat 中對應的兩個配置項。
修改完成后,使用openresty-start.bat 腳本,進行啟動。

openresty-restart.bat 腳本,開發過程中會經常用到,因為每修改一次lua腳本,需要重新啟動openresty/nginx ,重新進行加載。
2.2:lua project 工程的環境
大致按照下面的結構,組織 lua腳本的工程。 或者說nginx web項目的工程。

工程的目錄,會在兩個地方用到:
(1) openresty的 openresty-start.bat 腳本中
? 具體請參見網盤的 openresty-start.bat 腳本 源碼。
(2) 也會在 ZeroBrane Studio 的環境 用到
? 會作為 ZeroBrane Studio 的工程目錄。
2.2 準備調試腳本
調試的腳本為:luaScript/test.lua
--- 啟動調試
local mobdebug = require("luaScript.initial.mobdebug");
mobdebug.start("192.168.0.5");
ngx.say("hello world.");
ngx.say("<hr>");
ngx.say(package.path);
local i=100;
ngx.say("<hr>");
ngx.say("i="..i);
mobdebug.done();
在conf/nginx.conf 文件, 配置好 luaScript/test.lua 對應的路徑:
location /test {
default_type 'text/html';
charset utf-8;
content_by_lua_file luaScript/test.lua;
}
2.3 ZeroBrane Studio 的工程目錄
通過ZeroBrane Studio的file > new 菜單,打開 lua project 工程 所在的目錄。

2.4 lua 調試依賴包的配置
將lua的依賴包路徑,配置到 工程的 conf/nginx.conf 文件下:
(1) 項目的lua腳本路徑
(2) ZeroBraneStudio-1.80 的lua腳本路徑
(3) nginx的lua腳本路徑
大致如下:
# for windows
lua_package_path "C:/dev/refer/LuaDemoProject/src/?.lua;E:/tool/ZeroBraneStudio-1.80/lualibs/?/?.lua;E:/tool/ZeroBraneStudio-1.80/lualibs/?.lua;E:/tool/openresty-1.13.6.2-win32/lualib/?.lua;;";
lua_package_cpath "E:/tool/ZeroBraneStudio-1.80/bin/clibs/?.dll;E:/tool/openresty-1.13.6.2-win32/lualib/?.dll;;";
如果是linux環境,需 要進行相應的 路徑,和文件類型的修改。上面的dll,在liux環境,需要改成so。
3 開始調試 lua
3.1 啟動調試的服務器
啟動ZeroBrane Studio(zbstudio.exe或zbstudio.sh)并啟動調試服務器 ,菜單為 Project | Start Debugger Server。

3.2 啟動調試的服務器
在瀏覽器輸入lua腳本所配置的地址,如果: http://localhost/test
location /test {
default_type 'text/html';
charset utf-8;
content_by_lua_file luaScript/test.lua;
}
ZeroBrane Studio會進入綠色箭頭對應行的代碼
3.3 查看運行時的變量值
使用watch工具,將需要查看的變量, 填入。 然后開始單步執行。 具體如下圖

3.4 調試后的結果
程序調試完成后,可以在瀏覽器看到預期的結果。

3.5 調試快捷鍵
- F10 下一行
- Shift+F10 跳過調試
- Ctrl +F10 跳過當前function
- Shift + F5 終止運行
- F6 運行
- F5 debug運行
3.6 問題 :module socket.core 加載失敗
如果出現以下問題:
2019/12/28 17:09:57 [error] 14568#13196: *1 lua entry thread aborted: runtime error: error loading module 'socket.core' from file 'E:/tool/ZeroBraneStudio-1.80/bin/clibs/socket\core.dll'
用一種可能就是使用了的64位的OpenResty,換成32位的OpenResty 即可。
瘋狂創客圈的網盤,本文所涉及有的工具的安裝文件,都有提供。
說明:本文會以pdf格式持續更新,更多最新尼恩3高pdf筆記,請從下面的鏈接獲?。?a target="_blank" rel="noopener nofollow">語雀 或者 碼云
浙公網安備 33010602011771號