日常的debug
當把一個本地項目部署到遠程測試服務器后有可能出現意想不到錯誤,為了排查問題可能會變成:
這樣:
然后這樣:
最后就:
最可怕的是,由於堆棧的關系,很難在一次debug日志中拿到想要的信息,往往是一層層往下打日志,才能拿到想要的debug信息。
remote debug
本地服務器開放端口,將遠程服務器的斷點信息打到本地服務器。
那具體如何實現呢?
jetbrains的“EmmyLua”插件 + mobdebug庫
本地jetbrains增加EmmyLua插件安裝
遠端服務器增加mobdebug包放到項目debug目錄下,並增加配置信息
https://github.com/pkulchenko/MobDebug/blob/master/src/mobdebug.lua
local mobdebug = require("debug.mobdebug");
mobdebug.rbasedir("/usr/local/openresty/nginx/lua/") -- remote
mobdebug.lbasedir("/Users/wilburxu/lua/test/") -- local
mobdebug.start("host.docker.internal", 28172);
ps:斷點信息發回的是遠端服務器的line,所以本地服務器要保證和遠端服務器的line一致。
本地添加調試configuration
發送請求
就可以得到我們想要的堆棧信息了。