远程调试openresty中的Idea无法使用

我在使用mobDebug。如果从命令行运行lua脚本,一切正常。但是当我从openresty中运行它们时,Idea没有停止。它只会写入"已连接/已断开" 配置如下:

  location / {
    access_by_lua_block {
      local client =  require("client")
  }

client.lua:

    local mobdebug = require("mobdebug");
    mobdebug.start()
    local lfs = require("lfs")
    print("文件夹: "..lfs.currentdir())

modebug debug_hook未调用所需行数,set_breakpoints没有调用。

Idea Debug Logs,但什么都没有发生:

Idea Debug Logs: 已连接/已断开

Idea捕捉来自终端client.lua的调试;但是它错过了从运行nginx中调试的部分。

点赞
用户1885442
用户1885442

这不是答案。我只是遇到了基本上相同的问题,评论空间太小了,无法容纳我想分享的所有相关观察:

  1. 实际上,在运行在nginx中的代码中,在init_by_lua_block直接调用的代码中,我确实能够立即停止并进行步进调试。当然,在服务器启动或配置重新加载期间,此代码仅执行一次。
  2. 我从未能够停止在工作代码(例如rewrite_by_lua_*)中。mobdebug.coro()没有帮助,而mobdebug.on()则会抛出“尝试跨C调用边界进行yield”的错误。
  3. 我只能停止一次,在mobdebug.start()之后的下一个语句上;一旦我按下 |>(恢复程序),它就不会在任何进一步的断点上停止。
2019-08-09 18:01:00
用户1442917
用户1442917

使用mobdebug.loop()不是正确的方法,它被用于实时编码,这在这种设置下不会按预期工作。应该使用mobdebug.start()

请参考在ZeroBrane Studio中设置此调试的示例:http://notebook.kulchenko.com/zerobrane/debugging-openresty-nginx-lua-scripts-with-zerobrane-studio。所有有关如何配置mobdebug路径和所需模块的详细信息仍然适用于您的环境。

2019-08-10 04:52:02