1

我试图让 Eclipse 与 xdebug 对话。从 xdebug 日志来看,似乎 xdebug 工作正常(即:它正在发送它<init><response>消息),但 Eclipse 没有向 xdebug 发送任何内容(即:no feature_setfeature_get等命令,如 Netbeans)。


这是我的设置:

  • Mac OS/X 10.7.5
  • Eclipse 4.2.1“朱诺”
    • PHP 开发工具 (PDT) SDK 功能 3.1.1.201209101312
  • (网豆 7.1.2)
  • MAMP 2.1.1 运行:
    • 阿帕奇 2.2.22
    • PHP 5.4.4
      • 正在运行的 PHP 可执行文件是/Applications/MAMP/bin/php/php5.4.4/bin/php
      • 正在使用的 PHP 配置文件是/Applications/MAMP/bin/php/php5.4.4/conf/php.ini
      • xdebug 2.2.0

我的相关行php.ini是:

[xdebug]
zend_extension = "/Applications/MAMP/bin/php/php5.4.4/lib/php/extensions/no-debug-non-zts-20100525/xdebug.so"
xdebug.default_enable = on
xdebug.remote_enable = on
xdebug.remote_host = localhost
xdebug.remote_port = 9000
xdebug.remote_autostart = on
xdebug.remote_handler = "dbgp"
xdebug.remote_autostart = on
xdebug.remote_mode = "req"
xdebug.remote_connect_back = on
xdebug.remote_log = /tmp/xdebuglog.log

我可以让 Netbeans 使用会话 ID 连接到端口 9000 上的 xdebugnetbeans-xdebug没有问题。请注意,当我开始调试时,它会在我的 Web 浏览器中打开一个新窗口,?XDEBUG_SESSION_START=netbeans-xdebug并附加到我正在运行的 PHP 文件的 URL。

这是 Netbeans 尝试连接时 xdebug 日志的片段:

Log opened at 2013-01-18 18:42:52
I: Checking remote connect back address.
I: Remote address found, connecting to ::1:9000.
I: Connected to client. :-)
-> <init xmlns="urn:debugger_protocol_v1" xmlns:xdebug="http://xdebug.org/dbgp/xdebug" fileuri="file:///Applications/MAMP/htdocs/projectname/index.php" language="PHP" protocol_version="1.0" appid="647" idekey="netbeans-xdebug"><engine version="2.2.0"><![CDATA[Xdebug]]></engine><author><![CDATA[Derick Rethans]]></author><url><![CDATA[http://xdebug.org]]></url><copyright><![CDATA[Copyright (c) 2002-2012 by Derick Rethans]]></copyright></init>

<- feature_set -i 0 -n show_hidden -v 1
-> <response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="http://xdebug.org/dbgp/xdebug" command="feature_set" transaction_id="0" feature="show_hidden" success="1"></response>

<- feature_set -i 1 -n max_depth -v 3
-> <response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="http://xdebug.org/dbgp/xdebug" command="feature_set" transaction_id="1" feature="max_depth" success="1"></response>

<- feature_set -i 2 -n max_children -v 30
-> <response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="http://xdebug.org/dbgp/xdebug" command="feature_set" transaction_id="2" feature="max_children" success="1"></response>

<- feature_get -i 3 -n max_data
-> <response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="http://xdebug.org/dbgp/xdebug" command="feature_get" transaction_id="3" feature_name="max_data" supported="1"><![CDATA[1024]]></response>

<- stdout -i 4 -c 1
-> <response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="http://xdebug.org/dbgp/xdebug" command="stdout" transaction_id="4" success="1"></response>

<- step_into -i 5
-> <response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="http://xdebug.org/dbgp/xdebug" command="step_into" transaction_id="5" status="break" reason="ok"><xdebug:message filename="file:///Applications/MAMP/htdocs/projectname/index.php" lineno="17"></xdebug:message></response>

<- stack_get -i 6
-> <response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="http://xdebug.org/dbgp/xdebug" command="stack_get" transaction_id="6"><stack where="{main}" level="0" type="file" filename="file:///Applications/MAMP/htdocs/projectname/index.php" lineno="17"></stack></response>

…

-> <response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="http://xdebug.org/dbgp/xdebug" command="feature_get" transaction_id="14" status="stopping" reason="ok"></response>

Log closed at 2013-01-18 18:47:21

在 Eclipse 中……</p>

我在工作区中创建了一个新的 PHP 项目,使用默认的 PHP 设置,并为源文件和公共资源创建了单独的文件夹。我在 PHP 包含路径步骤中没有更改任何内容,但在 PHP 构建路径中,我单击Link Source并链接到我项目中/Applications/MAMP/htdocs/projectname的一个projectname文件夹。

然后我将 Eclipse 首选项设置如下:

  • General->Web Browser中,我已将其设置为使用外部 Web 浏览器 (Firefox)。
  • PHP-> Debug->Installed Debuggers中,我检查了 XDebug 是否在列表中,正在使用端口 9000,JIT 远程会话已关闭,并且我使用这些说明来确保它使用 idekeymparker17
  • PHP->Debug中,我:
    • 将 PHP 调试器设置为“XDebug”
    • 将 PHP 服务器设置为正确的基本 URL ( http://projectname.local) 本地 Web 根 ( /Applications/MAMP/htdocs/projectname) 以及服务器和我的工作区之间的路径映射。
    • 将 PHP Executable 设置为正确的可执行路径 ( /Applications/MAMP/bin/php/php5.4.4/bin/php),PHP ini 文件 ( /Applications/MAMP/bin/php/php5.4.4/conf/php.ini),将 SAPI 类型设置为“CLI”,并将 PHP 调试器设置为“XDebug”。
    • 选中Enable CLI Debug复选框。
    • 选中Break at first line复选框。

在我的调试配置中,我添加了一个 PHP Web 应用程序并将其首选项设置如下:

  • Server我设置上面创建的PHP服务器的选项卡中,正确设置文件,并正确设置URL。

这是 Eclipse 尝试连接时 xdebug 日志中的一个片段:

Log opened at 2013-01-18 17:33:48
I: Checking remote connect back address.
I: Remote address found, connecting to ::1:9000.
I: Connected to client. :-)
-> <init xmlns="urn:debugger_protocol_v1" xmlns:xdebug="http://xdebug.org/dbgp/xdebug" fileuri="file:///Applications/MAMP/htdocs/projectname/index.php" language="PHP" protocol_version="1.0" appid="703" idekey="mparker17"><engine version="2.2.0"><![CDATA[Xdebug]]></engine><author><![CDATA[Derick Rethans]]></author><url><![CDATA[http://xdebug.org]]></url><copyright><![CDATA[Copyright (c) 2002-2012 by Derick Rethans]]></copyright></init>

-> <response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="http://xdebug.org/dbgp/xdebug" status="stopping" reason="ok"></response>

Log closed at 2013-01-18 17:33:49

这似乎向我表明 Eclipse 没有与 xdebug 对话,但我很难理解为什么会发生这种情况。

4

1 回答 1

0

JIT 远程会话已关闭

打开它。

于 2013-01-21T00:17:25.290 回答