Eclipse Xdebug 冻结在 57%

Posted

技术标签:

【中文标题】Eclipse Xdebug 冻结在 57%【英文标题】:Eclipse Xdebug Freezes at 57% 【发布时间】:2014-01-10 05:16:06 【问题描述】:

我的问题:

当从 Eclipse 为我的一个 php 页面启动调试配置时,该页面在 Chrome 中成功打开,但 Eclipse 调试器冻结在 57%(在 Eclipse 的右下角)并且不再继续。永远不会到达设置的断点。

我的设置:

    MAMP 2.2 PHP 5.3.3 Eclipse 开普勒 Eclipse PDT Xdebug 2 个虚拟主机,根目录位于 /Applications/MAMP/htdocs Apache 端口:80 mysql 服务器端口:3306

我在 MAMP 中设置的虚拟主机运行良好。以下是有关 Xdebug 设置的屏幕截图:

我怀疑问题是由我的虚拟主机引起的。两个虚拟主机位于“/Applications/MAMP/htdocs/ledworld”和“/Applications/MAMP/htdocs/sandbox”下。我目前正在尝试调试沙盒项目。

如果您能提供详细说明,说明我应该对随附的屏幕截图进行哪些更改,或者提供有关如何设置的分步说明,那就太好了!

【问题讨论】:

你能从网络服务器日志中看出它是否收到过请求吗?在客户端上,是否曾经建立到端口 9000 的连接(netstat -na | grep :9000 是否表示已连接,或者只是在监听)? 我检查了 apache_error.log 和 php_error.log 并没有在这些文件中记录任何内容。网络统计-na | grep :9000 也不显示任何内容(没有与 grep 匹配的行)。 道歉,原来在 php 错误日志中有这一行:[21-Dec-2013 15:36:45 Europe/Berlin] PHP Warning: The remote debug handler '”dbgp”' is不支持。在第 0 行的未知中 我无法理解该错误,因为您的第一个屏幕截图显示您已禁用 dbgp。 作为更新,我删除了虚拟主机配置(从主机文件中删除条目,从 MAMP httpd-vhosts.conf 文件中删除条目并将所有网站文件放在 htdocs 下。然后我添加了以下选项到 php.ini 文件:“xdebug.remote_log=/tmp/xdebug.log”以生成 xdebug 文件。这向我显示了相同的错误:“E:不支持远程调试处理程序 'DBGp'。:- (" 在生成的日志中。所以我将 php.ini 文件中的选项从 "xdebug.remote_handler=DBGp" 更改为 "xdebug.remote_handler=dbgp" 等等!它成功了! 【参考方案1】:

这里是其他人的完整解决方案:

/Applications/MAMP/bin/php/<your_php_version>/conf/php.ini 的底部应如下所示:

[xdebug]
zend_extension="/Applications/MAMP/bin/php/<your_php_version>/lib/php/extensions/no-debug-non-zts-<timestamp>/xdebug.so"
xdebug.remote_enable=1
xdebug.remote_host=sandbox
xdebug.remote_port=9000
xdebug.remote_handler=dbgp
xdebug.idekey=ECLIPSE_DBGP
xdebug.remote_log=/tmp/xdebug.log

请注意,xdebug.remote_host 选项设置为您为虚拟主机提供的名称。所以就我而言,我的 httpd-vhosts.conf 文件将包含这样的条目

<VirtualHost *:80>
    ServerName sandbox
    DocumentRoot /Applications/MAMP/htdocs/sandbox/
    <Directory /Applications/MAMP/htdocs/sandbox/>
        Options Indexes FollowSymLinks MultiViews
        AllowOverride All
        Order allow,deny
        allow from all
    </Directory>
</VirtualHost>

我的/private/etc/hosts 文件会有这样的条目

127.0.0.1       sandbox

从 Eclipse 方面来说,这是您应该做的。

配置 Eclipse 的 XDebug 调试器。确保所选端口与上面 php.ini 文件中指定的端口匹配

如果您希望外部程序触发调试会话(例如 Chrome Xdebug 帮助程序扩展),请确保将“接受远程会话 (JIT)”设置为“localhost”。

Eclipse Preferences->PHP->Debug->Installed Debuggers->XDebug->Configure->

在 Eclipse 中添加新的或编辑现有的 PHP 可执行文件:

确保“可执行路径”和“php.ini 文件”字段指向 MAMP 使用的相同 PHP 版本(MAMP->Preferences...->PHP->PHP 版本。您可能不知道)还需要填写“php.ini文件”字段,但我还是这样做了。

Eclipse 首选项->PHP->PHP 可执行文件->添加/编辑

在 Eclipse 中设置服务器:

我在 MAMP 下为 Apache 使用 HTTP 端口 80(MAMP->Preferences...->Ports->Apache Port)。如果您使用不同的端口,请确保将其包含在此屏幕中“基本 URL”的末尾。

Eclipse 首选项->PHP->PHP 服务器->新建/编辑

创建一个新的 Eclipse 调试配置,如下所示:

“PHP 服务器”应该设置为您在上面创建的服务器。 “文件”应设置为您要在项目中调试的 php 文件。如果“URL”字段未显示您希望在浏览器中输入的内容以加载 PHP 文件(即http://&lt;virtual_host&gt;/path/to/file/being/debugged.php,则取消选中“自动生成”框并手动修改“URL”字段的第二部分,以便完整的 URL 是您所期望的。不要忘记添加您的 PHP 脚本期望在 $_GET 变量中找到的任何查询参数。

调试配置的“调试器”选项卡应如下所示:

确保“服务器调试器”设置为 XDebug。我喜欢取消选中“Break at First Line”选项,因为我发现总是在第一行代码中断很烦人。改为使用断点来控制调试器停止的位置。

这就是您需要做的所有事情。调试愉快! :)

【讨论】:

以上是关于Eclipse Xdebug 冻结在 57%的主要内容,如果未能解决你的问题,请参考以下文章

PHP 调试配置挂起 - 等待 XDebug 会话 (57%) [重复]

PHP 调试配置挂起 - 等待 XDebug 会话 (57%) [重复]

使用 PHP fastcgi 和 eclipse 进行 Xdebug 配置?

Eclipse xdebug 会话永远不会完成并保持 48%

在 Eclipse PDT 中使用 xdebug 和 cakephp 进行调试

Eclipse PHP 的 Xdebug 问题