openwrt上使用emmylua + emmyluadebugger + clion调试luci

lua-emmyluadebugger

A OpenWrt package of EmmyLuaDebugger

IntelliJ-EmmyLua是一个给JetBrains全家桶用的lua插件,也有VSCode版本VSCode-EmmyLua插件。

EmmyLuaDebugger是配合IntelliJ-EmmyLua使用的remote debugger, C++编写供lua调用的动态库(emmy_core.so),相比于我以前使用的mobdebug具有更高的性能。

lua-emmyluadebugger是EmmyLuaDebugger的OpenWrt包,host cmake最低版本需要3.15(使用openwrt v19.07的即可),不然要修改EmmyLuaDebugger的CMakeLists.txt。

  • 使用方法(基于clion)

    • 安装Emmylua插件

    • 使用clion的deployment将openwrt根文件系统拉到开发机器上(openwrt的根文件系统编译好tftp,手动rsync也行)

    • clion添加一个配置:Run >> Edit Configuration >> + ,选择Emmy Debugger,然后配置参数,IDE这端作为Server所以connection选择Debugger connect IDE,配好本机ip和监听端口。

    • 拷贝clion上自动生成的lua代码到lua的入口文件/www/cgi-bin/luci的第一行

    -- openwrt上这句可以不要,因为库已经被安装到了/usr/lib/lua,在openwrt上这个已属于package.cpath了
    -- package.cpath = package.cpath .. ';/home/a/.local/share/JetBrains/CLion2023.3/EmmyLua/debugger/emmy/linux/?.so'
    local dbg = require('emmy_core')
    dbg.tcpConnect('192.168.3.3', 9966)
    • 下一个断点,进入luci的web,好了,debug吧。

  • 调试luci遇到的问题

    • 下断点停得超过60s,你的网页会报Bad Gateway,这个是uhttpd的配置绝对,修改/etc/config/uhttpd,改为:uhttpd.main.script_timeout='0',即永不超时,重启uhttpd服务
    • 如果htm中插入了Lua语句,修改后可能不生效,修改luci.ccache.enable='0'.
posted @   thammer  阅读(245)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· Qt个人项目总结 —— MySQL数据库查询与断言
历史上的今天:
2023-03-20 gst-launch-1.0测试
2020-03-20 do {} while(0)的妙用
2016-03-20 Jlink 软件断点和硬件断点
点击右上角即可分享
微信分享提示