PhpStorm 本地调试停止工作 - 您在设置中看到问题吗?

Posted

技术标签:

【中文标题】PhpStorm 本地调试停止工作 - 您在设置中看到问题吗?【英文标题】:PhpStorm local debugging stopped working - Do you see problem in setup? 【发布时间】:2019-10-21 08:57:15 【问题描述】:

我曾经让 phpStorm 在我的计算机上出色地工作。没有浏览器扩展。我可以在任何地方放置断点,转到浏览器中的某个 URL,按 Enter,然后我会自动转到给定文件中的断点。当我单步执行代码时,项目中的文件会自动打开。

现在,一团糟。

首先是我在 xdebug.ini 中的 Xdebug 信息(我没有在 php.ini 中指定任何与 Xdebug 相关的内容):

zend_extension=/usr/local/php5/lib/php/extensions/no-debug-non-zts-20151012/xdebug.so
[xdebug]
xdebug.remote_enable=on
xdebug.default_enable=on
xdebug.remote_port=9000
xdebug.remote_host=localhost

如果我运行 php -v 我会得到

PHP 7.0.15 (cli) (built: Feb 13 2017 10:30:54) ( NTS )
Copyright (c) 1997-2017 The PHP Group
Zend Engine v3.0.0, Copyright (c) 1998-2017 Zend Technologies
    with Zend OPcache v7.0.15, Copyright (c) 1999-2017, by Zend Technologies
    with Xdebug v2.7.2, Copyright (c) 2002-2019, by Derick Rethans
iMac:xdebug-2.7.2 $ 

phpinfo() 显示基于我的 .ini 设置的相应值。

在 PhpStorm 中,我将 PHP CLI 设置为 7.0,它显示 Xdebug 2.7.2。

对“无法加载 xdebug”消息感到好奇,但 php -v 没有显示相同的消息。起初,我在 php.ini 和 xdebug .ini 中都定义了 zend_extension,并且在执行 php -v 时会看到该消息,但在从 php.ini 删除后,该消息从 php -v 消失了。

我不知道是否需要在构建、部署的调试设置下做任何事情,但这是默认设置:

另外,我将我的项目设置为与远程服务器同步,但为了调试,我不想使用路径映射。这就是我以前的方式,关于调试会话结束和未找到路径映射的 PhpStorm 消息从来都不是问题。

这是我的Run->Config

过去,我不担心起始 URL。无论我在浏览器中输入什么 URL,它都会触发调试。

这是我在路径映射方面尝试过的:

我这样做是为了看看它是否能解决问题,但没有。

我的直觉说这要么是 Xdebug 设置、我的 run->config 的问题,要么是我使用虚拟主机并且某处存在 localhost 条目导致问题的事实。

所以我很茫然。如果我选择Listen for incoming... 并转到 URL,则焦点不会转到具有当前断点的 PhpStorm。我在浏览器中看到事情停止了,我去 PhpStorm 并看到调试被触发。但是我点击跳过或进入调试的第二个就结束了。

我所做的事情有什么明显的错误吗?

编辑:这是我在 xdebug 日志中看到的内容:

[89603] W: Creating socket for 'dev.courses.com:9000', poll success, but error: Operation now in progress (19).
[89603] E: Could not connect to client. :-(
[89603] Log closed at 2019-10-21 10:42:37
[89603]
[89603] Log opened at 2019-10-21 10:42:37
[89603] I: Connecting to configured address/port: dev.courses.com:9000.
[89603] W: Creating socket for 'dev.courses.com:9000', poll success, but error: Operation now in progress (19).
[89603] E: Could not connect to client. :-(
[89603] Log closed at 2019-10-21 10:42:37

不确定错误的细节...也许这暗示了一些事情?我的问题是我在配置中的哪个位置指定 localhost 和我的虚拟主机别名?也许这就是把事情搞砸的原因?

【问题讨论】:

【参考方案1】:

您可以通过使用xdebug.remote_log=/tmp/xdebug.log 设置来了解Xdebug 正在尝试做什么。此日志将指示正在进行哪些连接尝试,以及它们成功与否的原因。

【讨论】:

【参考方案2】:

好的,所以这是一个xdebug 问题,虽然一开始并不明显。

本来我并没有想到要查看 PHPStorm 日志。但是 PHPStorm 日志显示了

Argument for @NotNull parameter 'remoteFileUrl' of com/jetbrains/php/debug/xdebug/debugger/XdebugDriver.onBreak must not be null 

搜索上述错误将我带到

https://intellij-support.jetbrains.com/hc/en-us/community/posts/360001498520-xdebug-works-only-with-first-line

原来我的 PHPStorm 版本无法与 xdebug 2.7 一起使用,所以我降级到 2.6.1,一切都很好:-)

谢谢, 布赖恩

【讨论】:

以上是关于PhpStorm 本地调试停止工作 - 您在设置中看到问题吗?的主要内容,如果未能解决你的问题,请参考以下文章

phpstorm配置xdebug进行远程调试(ubuntu)

phpstorm+xdebug手机app调试

VS 本地调试 x64 平台 “Visual Studio Remote Debugging Monitor 已停止工作” 问题解决

本地环境 XAMPP+phpStorm+XDebug+chrome配置和断点调试

本地xdebug调试搭建 Laravel+homestead+phpstorm

本地环境phpStorm10+XDebug配置和断点调试