【发布时间】:2018-10-10 16:05:10
【问题描述】:
所以我让我的 webserver 容器愉快地运行 xdebug,并且我有 xdebug.remote_log 设置,所以我可以诊断问题。如果我在第一行设置断点,phpstorm 会按预期运行,它会中断,为您提供正常选项。但是,如果您允许它继续运行超过该点,phpstorm 会出现代码超时的现象,它就会挂起。但是,如果我在此期间读取 xdebug remote_log,它报告它已成功命中我设置的下一个断点并在那里等待,phpstorm 将代码显示为正在执行。
以下是一些配置截图等:
php.ini
设置 > 语言和框架 > php > 调试
设置 > 语言和框架 > php > 服务器 > localhost (docker) 也就是我唯一添加的服务器
xdebugs remote_log 末尾的屏幕截图。然后从 public/index.php 初始断点开始,我允许它运行。然后在这里它声明它在 ListController.php 中中断,这是下一个放置断点的正确位置。正如您可能从上一张图片中猜到的那样,在 docker 中,repo 位于 /srv/www 中,而在我的本地,它位于 /home/myname/Development/projectName/checkout 中。
xdebug remote_log:https://pastebin.com/faiQqwMT
some code so stackoverflow will let me link the log
我的idea.log中唯一有趣的部分
2018-10-12 10:18:23,772 [81267328] 错误 - plication.impl.ApplicationImpl - com/jetbrains/php/debug/xdebug/debugger/XdebugDriver.onBreak 的 @NotNull 参数“remoteFileUrl”的参数不得为空 java.lang.IllegalArgumentException:com/jetbrains/php/debug/xdebug/debugger/XdebugDriver.onBreak 的 @NotNull 参数“remoteFileUrl”的参数不能为空 在 com.jetbrains.php.debug.xdebug.debugger.XdebugDriver.$$$reportNull$$$0(XdebugDriver.java) 在 com.jetbrains.php.debug.xdebug.debugger.XdebugDriver.onBreak(XdebugDriver.java) 在 com.jetbrains.php.debug.xdebug.debugger.XdebugDriver$4.onResponse(XdebugDriver.java:172) 在 com.jetbrains.php.debug.xdebug.debugger.XdebugDriver$4.onResponse(XdebugDriver.java:167) 在 com.jetbrains.php.debug.connection.PhpDebugConnection.handleInput(PhpDebugConnection.java:256) 在 com.jetbrains.php.debug.connection.PhpDebugConnection.lambda$startReading$2(PhpDebugConnection.java:290) 在 com.intellij.openapi.application.impl.ApplicationImpl$1.run(ApplicationImpl.java:314) 在 java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511) 在 java.util.concurrent.FutureTask.run(FutureTask.java:266) 在 java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) 在 java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) 在 java.lang.Thread.run(Thread.java:745)
【问题讨论】:
-
您是否将项目目录添加到包含路径?有什么原因吗?
-
@Ástþór 我不知道你在问什么
-
在最后一个屏幕截图中,您在项目文件和包含路径中列出了相同的路径。理想情况下,您不应该这样。问题(我猜)是在代码进入其他 PHP 文件后 IDE 无法找到正确的路径映射。如果您能分享您的 xdebug.log 文件 + 说明您的项目结构(向我们展示调试中涉及的文件),那就太好了
-
如果我填写一个,它会填写两个。我猜这也是映射的问题,它应该怎么看?明天上班时我会更详细地截取一些问题的屏幕截图
-
谢谢!这是一个已知的错误:youtrack.jetbrains.com/issue/WI-43622。切换到 XDebug 2.6
标签: docker intellij-idea docker-compose phpstorm xdebug