使用XDebug + PHPStorm进行调试迫使我总是介入

时间:2015-06-03 05:50:26

标签: debugging phpstorm xdebug codeception

我正在尝试调试 Codeception 测试。

使用 PHPStorm + XDebug 的调试平台在使用右侧 IDE-KEY 作为cookie的浏览器时效果很好。

但是,在尝试使用 CLI 调试codecept时遇到以下问题:

  • 如果我在Cest类中放置断点,行为是正常的。我可以跳过功能并单击“恢复”以停止调试。
  • 但每当我在 my 代码(I.E控制器或我的命名空间类)中放置一个断点时,xdebug就会变得无法使用:
  

如果我尝试恢复退出跳过,xdebug会忽略我的请求并始终步入当前行。

这使得我的测试很难继续进行。

我尝试过使用两个平台:我常用的流浪汉+ nginx + php5-fpm(带远程调试),还有wamp(本地调试)。

任何帮助将不胜感激!

-

更新 嗯,这与Codeception无关。我尝试使用 PHPUnit 进行测试,同样的情况也是如此。这似乎也不是CLI的问题,因为我尝试从浏览器调试PHPUnit,没有运气。

我想也许这是一个PHPStorm错误,但是看看xdebug日志,我看到了正确的方法:

<- step_over -i 41
-> <response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="http://xdebug.org/dbgp/xdebug" command="step_over" transaction_id="41" status="break" reason="ok">

调用step_over,而不是step_into。所以也许是xdebug的错误?

奇怪的是,这并不总是发生。更改配置后,它有时不会发生,但随后该错误似乎又回来了......

2 个答案:

答案 0 :(得分:4)

我也遇到了类似的问题。对我来说,无论我提出什么要求,PHPStorm总是会跳出来。

删除所有手表也解决了我的问题!

答案 1 :(得分:3)

我遇到了同样的问题并且能够通过删除.idea目录并让PHPStorm重新创建它来修复它。

这对我来说似乎是一个沉重的修复,经过一些反复试验后,我能够将问题追溯到PHPStorm中定义的手表。

您应该可以通过删除所有手表来解决问题。您可能需要让当前的调试会话完成,但下一个调试会话应该正常工作。