我疯了。我正在尝试在dockerized openresty中设置lua代码的远程调试。我使用PHPStorm和EmmyLua扩展名,在Lua端使用mobdebug库。我一直在阅读和听到有关此功能对人有用的报告,但是对于我来说,在断点处停止(或在mobdebug.start()
之后立即停止工作)大约有15%的时间有效(证明我是而不是完全错误地配置了该功能),包括恰好0我实际要调试的代码中这些位置的百分比。
我不会调试此问题。我打算通过使用一个已知有效的确切设置来解决该问题,因此我需要一个对其有效的人来告诉我他们的设置是什么:
我愿意完全破坏我的开发环境,并完全按照工作规范对其进行重建,以便进行有效的Lua调试。
编辑:对于那些感兴趣的人,这是我的详细症状:
mobdebug.start()
之后停止,然后“恢复程序”并且命中带有断点的行之后,但它并没有在那里停止)mobdebug.start()
中执行从init_by_lua_block
执行的代码后停止,即每个服务器启动/配置一次重新加载mobdebug.start()
,ssl_certificate_by_lua_block
等)中的rewrite_by_lua_block
之后,无法停止,这可能是可以理解的,因为协程涉及mobdebug.coro()
中的init_worker_by_lua_block()
错误与mobdebug.lua
中的“当前上下文中禁用了API” mobdebug.on()
无效,或者由于“试图在C调用边界上屈服”而出错。我还没有发现这种模式。 最佳答案
在mobdebug.start()
之后停止操作应该在所有情况下都可以工作,除非已经建立了到相同调试器 Controller 的连接,所以它通常并不指向试图在同一 Controller / IDE上建立多个调试 session 的系统(或根本无法建立连接)。
同样,有几个原因可能导致断点不起作用,但是如果断点作为特定设置的一部分在文件中起作用,那么我希望它们在这种情况下始终可以起作用。文档中列出了断点可能不起作用的一些原因:https://studio.zerobrane.com/doc-faq#why-breakpoints-are-not-triggered。
mobdebug提供了基于命令行的 Controller ,因此出于故障排除的目的,使用它可能会更容易,而不是更复杂的设置。