使用idea调试lua代码-Openresty

4

使用idea调试lua代码

Openresty是基于nginx与lua的高性能web框架,继承了大量的高质量的lua库、第三方模块以及大多数依赖项。
目前对于lua主流开发工具有vscode+lua插件、IntelliJ IDEA+EmmyLua、ZeroBrane Studio、还有其他的一些文本编辑软件等。
lua作为一种脚本语言,除了开发简洁,性能优越之外,还应该具备调试功能,对于开发者才能算得上更加友好。
本文将使用IntelliJ IDEA+EmmyLua使用远程调试和本地调试。
  • IntelliJ IDEA 2018.2.1
  • Lua 5.1
  • EmmyLua 1.2.6-IDEA182
  • MobDebug 0.70
项目目录结构

nav

源码位置often-script

一、远程调试

1、打开idea中调试配置,使用Lua Remote(Mobdebug),如下图:

remote-debug-01

2、配置调试名称和远程调试端口;

remote-debug-02

3、在需要调试的位置加上调试代码;

--- 启动调试
local mobdebug = require("src.initial.mobdebug");
mobdebug.start();

4、启动Openresty项目,然后打开debug模式;

remote-debug-03

5、启动openresty项目;

# 进入到工作目录
cd /Users/xiaoyueya/projects/vscode/often-script/lua/project
# 启动nginx
sudo nginx -p ./ -c nginx-debug.conf -s reload

remote-debug-05

6、刷新浏览器;

remote-debug-04

7、断点位置和lua栈信息;

remote-debug-06

8、执行结果;

remote-debug-07

二、本地调试

1、打开idea中调试配置,使用lua application ,如下图:

local-debug-01

2、配置工作目录和执行文件入口;

local-debug-02

3、编写调试名称为main.lua,然后点击OK,进入主编辑页,找到调试按钮;

local-debug-03

4、开始本地调试;

local-debug-04

5、查看堆栈信息;

local-debug-05

6、查看执行结果

local-debug-06

你可能感兴趣的

日月草 · 9月6日

楼主你好,我用idea远程调试时报这个异常,你是怎么解决的?
lua entry thread aborted: runtime error: ./lualib/socket.lua:13: module 'socket.core' not found:

no field package.preload['socket.core']
no file './/socket\core.luac'
no file './/socket\core.lua'
no file './site/lualib/socket\core.ljbc'
no file './site/lualib/socket\core/init.ljbc'
no file './lualib/socket\core.ljbc'
no file './lualib/socket\core/init.ljbc'
no file './site/lualib/socket\core.lua'
no file './site/lualib/socket\core/init.lua'
no file './lualib/socket\core.lua'
no file './lualib/socket\core/init.lua'
no file '.\socket\core.lua'
no file 'E:\git\learn\learnOpenresty\lualib\socket\core.lua'
no file 'E:\git\learn\learnOpenresty\lua\socket\core.lua'
no file 'E:\git\learn\learnOpenresty\lua\socket\core\init.lua'
no file 'C:\Program Files (x86)\Lua\5.1\lua\socket\core.luac'
no file './site/lualib/socket\core.so'
no file './lualib/socket\core.so'
no file '.\socket\core.dll'
no file 'E:\git\learn\learnOpenresty\lualib\socket\core.so'
no file 'E:\git\learn\learnOpenresty\socket\core.dll'
no file 'E:\git\learn\learnOpenresty\loadall.dll'
no file './site/lualib/socket.so'
no file './lualib/socket.so'
no file '.\socket.dll'
no file 'E:\git\learn\learnOpenresty\lualib\socket.so'
no file 'E:\git\learn\learnOpenresty\socket.dll'
no file 'E:\git\learn\learnOpenresty\loadall.dll'

stack traceback:
coroutine 0:

[C]: in function 'require'

回复

载入中...