【问题标题】:Using netbeans, xdebug, symfony and phpunit together一起使用netbeans、xdebug、symfony和phpunit
【发布时间】:2011-03-09 13:42:38
【问题描述】:

我在我的 Apache 上安装了 xdebug,如果我在 Netbeans 中定义了一个断点,执行就会中断。但是如果我使用symfony phpunit:test-all 执行测试,执行将不会在给定的断点处中断。

有什么想法吗? 牛羊!

【问题讨论】:

    标签: php netbeans symfony1 phpunit xdebug


    【解决方案1】:

    要调试命令行脚本,首先导出XDEBUG_CONFIG 变量,如下所示:

    export XDEBUG_CONFIG="idekey=netbeans-xdebug" (Unix/Linux/OS X)

    set XDEBUG_CONFIG=idekey=netbeans-xdebug (Windows)

    (注意:我没有测试 Windows 命令。您可能必须转义 = 字符,或者该命令可能看起来有点不同。如果是这种情况,我希望有人过来并在评论中纠正我.)

    解释:当您为通过 Apache 运行的脚本打开调试会话时,NetBeans 将打开您的浏览器以访问以“XDEBUG_SESSION_START=netbeans-xdebug”结尾的 URL。当这种情况发生时,Xdebug 知道拦截这个参数,并给你的浏览器一个带有这个调试会话信息的 cookie。

    上面的命令相当于在命令行环境中设置cookie。

    【讨论】:

    • 哇,我不敢相信我花了这么长时间才发现,直到现在我才放弃使用控制台的调试器
    【解决方案2】:

    当您说您在 Netbeans 中定义了一个断点并且它可以正常中断时,您是在谈论从 Netbeans 中运行单元测试,还是在运行触发 Netbeans 中的断点的 Web 应用程序?

    无论哪种方式,我的第一个猜测是这两个场景使用不同的 PHP.INI 文件。获取一个单元测试来转储配置信息,我敢说你会很快看到。找到在命令行上使用的 PHP.INI,并确保为该场景设置了 XDebug。

    我希望这是有道理的。我现在完全不喝咖啡了。

    【讨论】:

    • 我运行一个在 Netbeans 中触发断点的 Web 应用程序。如果我运行@php -i@,我会看到启用了xdebug 支持,因此我认为xdebug 在命令行中配置得很好。
    • 酷。您可以尝试的一件事是将 xdebug.remote_autostart=1 添加到 PHP.INI 文件的 [xdebug] 部分。该问题可能与 CLI 未推送适当的 XDebug cookie / GET 参数以实际触发它有关。如果这不起作用,请务必检查 PHP.INI 中的其他 xdebug 设置。
    • 我尝试了一些配置,但没有任何效果。也许它不起作用,因为我使用的是 ZendServer。在我可以阅读的 Xdebug 文档中,zend 优化器和 xdebug 的组合会导致兼容性问题。 ATM 我想如果我安装了 XAMPP 或其他服务器,我应该重试配置 xdebug...
    • 嗯...我怎样才能看到 xdebug 是否安装正确?我输入了@php -i@,我看到 xdebug 被激活,但是如果我调用 var_dump,输出不是“pimped”?!?
    • 是的,Zend Optimizer 和 XDebug 一起可能是问题:加载多个“zend_extension”曾经是一个问题,至少。至于判断 XDebug 是否安装正确,您总是可以尝试调用 XDebug 特定函数,例如。 xdebug_get_declared_vars().
    【解决方案3】:

    我不使用 netbeans,但我认为 netbeans 不会修改您在其中放置断点的文件,并且我认为 symfony 无法读取您的 netbean 配置以找出中断的位置。

    此外,如果您在 netbeans 中运行测试所有任务并期望测试文件中断,我认为这也不会起作用,因为我相信任务分叉 php 进程并且这些进程不会被 netbeans 读取。

    当然是所有假设。

    【讨论】:

    • 我认为,xdebug 等待已配置端口 (9000) 上的连接。如果我运行测试,xdebug 必须等待,Netbeans 必须连接到 xdebug(使用给定的端口)。之后,Netbeans 配置断点,测试应该按预期中断......这就是为什么我认为它应该工作,如果进程被分叉。
    猜你喜欢
    • 2010-10-20
    • 1970-01-01
    • 2021-06-05
    • 1970-01-01
    • 2014-05-17
    • 2015-09-08
    • 1970-01-01
    • 1970-01-01
    • 2012-09-03
    相关资源
    最近更新 更多