【发布时间】:2011-03-09 13:42:38
【问题描述】:
我在我的 Apache 上安装了 xdebug,如果我在 Netbeans 中定义了一个断点,执行就会中断。但是如果我使用symfony phpunit:test-all 执行测试,执行将不会在给定的断点处中断。
有什么想法吗? 牛羊!
【问题讨论】:
标签: php netbeans symfony1 phpunit xdebug
我在我的 Apache 上安装了 xdebug,如果我在 Netbeans 中定义了一个断点,执行就会中断。但是如果我使用symfony phpunit:test-all 执行测试,执行将不会在给定的断点处中断。
有什么想法吗? 牛羊!
【问题讨论】:
标签: php netbeans symfony1 phpunit xdebug
要调试命令行脚本,首先导出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。
【讨论】:
当您说您在 Netbeans 中定义了一个断点并且它可以正常中断时,您是在谈论从 Netbeans 中运行单元测试,还是在运行触发 Netbeans 中的断点的 Web 应用程序?
无论哪种方式,我的第一个猜测是这两个场景使用不同的 PHP.INI 文件。获取一个单元测试来转储配置信息,我敢说你会很快看到。找到在命令行上使用的 PHP.INI,并确保为该场景设置了 XDebug。
我希望这是有道理的。我现在完全不喝咖啡了。
【讨论】:
我不使用 netbeans,但我认为 netbeans 不会修改您在其中放置断点的文件,并且我认为 symfony 无法读取您的 netbean 配置以找出中断的位置。
此外,如果您在 netbeans 中运行测试所有任务并期望测试文件中断,我认为这也不会起作用,因为我相信任务分叉 php 进程并且这些进程不会被 netbeans 读取。
当然是所有假设。
【讨论】: