【问题标题】:Remote debug Idea doesn't works for openresty远程调试理念不适用于 openresty
【发布时间】:2019-08-09 13:52:35
【问题描述】:

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

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

client.lua:

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

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

Idea Debug Logs,但没有任何反应:

idea catch debug from terminal client.lua;但它错过了运行 nginx。

【问题讨论】:

    标签: intellij-idea lua remote-debugging openresty


    【解决方案1】:

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

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

    【讨论】:

    • 我有同样的问题,它不能在任何断点处停止,只是断开连接,当我删除 mobdebug.done() 时,它可以在 mobdebug.satrt() 处停止,但不能在任何其他处停止断点,有什么想法吗?
    【解决方案2】:

    使用mobdebug.loop() 不是执行此操作的正确方法,因为它用于实时编码,此设置无法按预期工作。应该改用mobdebug.start()

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

    【讨论】:

    • 谢谢!我试过启动,但它不起作用(
    • 以什么方式不起作用?它不应该做更多的“连接/断开”循环,所以调试应该开始了。
    • 它写道:“无法开始调试'/Users/igracheva/IdeaProjects/smart-hub/smart-hub/nginx/lua/test_debug.lua'。编译错误:”
    猜你喜欢
    • 2011-10-13
    • 2019-11-19
    • 1970-01-01
    • 1970-01-01
    • 2011-04-12
    • 2014-04-23
    • 2019-07-19
    • 2019-01-30
    • 2021-03-21
    相关资源
    最近更新 更多