首页 > 解决方案 > 远程调试理念不适用于 openresty

问题描述

我正在使用 mobDebug。如果从命令行运行 lua 脚本一切正常。但是当我从 openresty 运行它们时,想法并没有停止。它只写“连接/断开”配置:

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

客户端.lua:

    local mobdebug = require("mobdebug");
    mobdebug.start()
    local lfs = require("lfs")
    print("Folder: "..lfs.currentdir())

不为需要的行调用 modebug debug_hook,不调用 set_breakpoints。

想法调试日志,但什么也没发生:

Idea 调试日志:已连接/已断开连接

Idea从终端client.lua捕获调试;但它错过了运行 nginx。

标签: intellij-idealuaremote-debuggingopenresty

解决方案


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

  1. mobdebug.start()实际上,我能够在 nginx 中运行的代码之后立即停止,并进行单步调试——但只能在直接从init_by_lua_block. 该代码当然在服务器启动或配置重新加载期间执行一次。
  2. 我永远无法停止工作代码(例如rewrite_by_lua_*)。mobdebug.coro()没有帮助,并mobdebug.on()抛出了“尝试跨越 C 调用边界”
  3. 在之后的下一个语句中,我只能停止一次mobdebug.start();一旦我点击 |> (恢复程序),它就不会在任何进一步的断点处停止。

推荐阅读