xdebug在IntelliJ Idea

时间:2017-12-26 18:33:54

标签: php apache debugging intellij-idea

问题

在执行PHP网页调试配置时,PHP会在我的Web应用程序中跳过-all- breakpoints。没有任何内容记录到xdebug日志中。调试器输出“正在等待与ide键'XYZ'的传入连接”,其中XYZ是为该会话生成的IDE密钥。

异常

如果我手动放置“xdebug_break();” PHP中的语句,PHP在断点处停止;但是,我看不到范围变量,并且会记录xdebug日志。

我正在运行

  • IntelliJ IDEA Ultimate 2017.3.1 Build#IU-173.3942.27
  • XAMPP Windows 5.6.32
  • PHP 5.6
  • Xdebug 2.5.3-5.6

XAMPP虚拟主机设置

<VirtualHost 127.0.0.2:80>
DocumentRoot "C:/dev/testphp"
ServerName 127.0.0.2
ErrorLog "C:\dev\testphp\logs\apache.error.log"
CustomLog "C:\dev\testphp\logs\apache.custom.log" common
</VirtualHost>

Xdebug PHP.ini设置

[Xdebug]
zend_extension=C:/xampp/php/php_xdebug-2.5.3-5.6-vc11.dll
xdebug.default_enable=1

xdebug.remote_enable=1
xdebug.idekey=PHPSTORM
xdebug.remote_host=127.0.0.2
xdebug.remote_connect_back=1
xdebug.remote_port=9000
xdebug.remote_mode=jit
xdebug.remote_log=C:/xampp/apache/logs/xdebug.log

; xdebug.profiler_enable=1
; xdebug.profiler_enable_trigger=1
; xdebug.profiler_output_dir=C:/xampp/apache/logs/logs/profiler

我尝试了以下内容:

  1. 启用检查断点(它们是)。
  2. 使用Zero-configuration Web Application Debugging with Xdebug and PhpStorm从头开始设置xDebug。出现同样的问题。
  3. 检查我的防火墙。 PHPStorm,IDEA和Apache都设置为允许。
  4. Web服务器上的验证调试器配置(一切都检出)
  5. 使用基本PHP文件创建一个新项目,以测试项目是否特定(出现相同问题)
  6. 从头开始重新安装XAMPP(Hail Mary。出现相同问题)。
  7. 我也试过研究这个问题,但上面似乎是标准的解决方案。
  8. 编辑1:

    怪异。重新启动后,它现在正在工作。我玩了选项,并确定可能的罪魁祸首是xdebug.remote_mode = jit

    我不是100%自信(我记得上周五玩过这个选项);但是,当我打开它时,它确实触发了我报告的上述错误。

    注意:这可能不是一个错误,而是预期的行为,而我自己还没有完全理解Just-In-Time模式的工作原理。

    编辑2:

    更新:正在发生奇怪的事情。 它适用于我的测试项目,但不适用于我的主项目

    测试项目 当我尝试“#4使用基本PHP文件创建一个新项目来测试项目是否特定(出现相同问题)”时,我创建了一个index.php文件,用于打印Fibonacci序列。 Xdebug捕获我在该文件中设置的断点

    主要项目: 当我在PHP中为在页面加载后触发的ajax调用中删除断点时,将忽略断点。 当我在PHP中为一个页面删除一个断点作为其在我的控制器中构造的beign时,断点被忽略 --Weirdness-- 如果我将这两个项目作为单独的窗口打开,测试项目运行良好;但是,如果我为主项目执行调试配置,则弹出的页面位于“等待127.0.0.1”,这对应于apache虚拟主机中主项目的IP地址。相比之下,127.0.0.2对应于测试项目。同时测试项目窗口打开调试器并暂停主项目的index.php文件的第一行,并警告文件在项目之外。

    编辑2.1:

    固定。

    Xdebug端口不匹配。

    PHP INI为xdebug指定了端口9000。项目的xdebug设置为测试项目指定了端口9000,为主项目指定了端口9001。关闭测试项目并将主项目更新为9000修复此问题。

1 个答案:

答案 0 :(得分:0)

怪异。重新启动后,它现在正在工作。 我玩了选项,并确定可能的罪魁祸首 xdebug.remote_mode = JIT

我并非100%自信(我记得上周五玩过这个选项);但是,当我打开它时,它确实触发了我报告的上述 bug

注意:这可能不是一个错误,而是预期的行为,而我自己还没有完全理解Just-In-Time模式的工作原理。

编辑:确保您也更新了xdebug的IDEA设置。如果端口不匹配,IDEA永远不会连接。