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://<virtual_host>/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%