阅读(2713) (10)

IntelliJ IDEA:通过Xdebug代理进行多用户调试

2019-03-26 13:39:00 更新

通过Xdebug代理进行多用户调试

此功能仅在Ultimate版本中受支持。
以下内容仅在安装并启用PHP插件时有效!

在本节内容中介绍了xdebug.remote_host值。IntelliJ IDEA接受此连接,并可以通过它与Xdebug通信。Xdebug仅支持连接到单个IP地址,并且由于安全原因,不会自动连接回运行浏览器的IP地址。为了在多用户环境中调试PHP应用程序,Xdebug提供了一个所谓的DBGp代理。

使用代理时,PHP Xdebug扩展不再直接连接到IntelliJ IDEA,而是连接到DBGp代理服务器。然后,团队中的所有开发人员都会连接到该代理。每个开发人员都有一个单独的调试会话在该代理上运行,这使得可以在同一服务器上对同一代码进行多用户调试。

ps xdebug架构代理

通过Xdebug代理(DBGp)服务器配置多用户调试

要通过Xdebug代理(DBGp)服务器配置多用户调试,请执行以下常规步骤:

  • 下载并安装DBGp代理
  • 确保在Web服务器上安装并配置了Xdebug
  • 从IntelliJ IDEA配置对DBGp代理服务器的访问
  • 在浏览器中启动调试会话

下载并安装DBGp代理

为了能够启动调试会话,您需要在服务器上运行DBGp代理,Web服务器本身以及所有开发人员计算机都可以访问该代理。我们可以在Web服务器上,同一网络中的计算机上或通过SSH隧道访问的计算机上安装代理。

  1. 在Komodo下载页面上,您可以找到特定于DBGp代理平台的Python二进制文件。下载所需的包并运行 pydbgpproxy 或 pydbgpproxy.exe文件。

  2. 在Web服务器上或在可以与Web服务器和所有开发人员计算机进行通信的计算机上启动DBGp代理。DBGp代理可执行文件接受两个参数:-d-i

    参数定义了从Web服务器监听调试器连接的IP地址和端口,以及监听开发人员的IP地址和端口。

    例如,监听环回地址(127.0.0.1 )和端口9001上的调试器连接,并监计算机IP地址和端口9000上的开发人员。

    pydbgpproxy -d 127.0.0.1:9001 -i 192.168.99.1:9000

    DBGp代理将在启动时确认这些设置:

    ps pdgp正在运行

确保在Web服务器上安装并配置了Xdebug

  1. 在编辑器中打开活动的php.ini文件:

    1. 在“设置/首选项”对话框(Ctrl+Alt+S)中,单击“语言和框架”下的“PHP”。

    2. 在打开的PHP页面上,单击“CLI解释器”字段旁边的browseButton

    3. 在打开的“CLI解释器”对话框中,“配置文件”只读字段显示活动php.ini文件的路径。单击“在编辑器中打开”。

  2. 确保至少指定了以下设置:

    [xdebug]
    zend_extension=xdebug_module_goes_here
    xdebug.remote_enable=1
    xdebug.remote_host=dbgp_proxy_hostname_or_ip
    xdebug.remote_port=9001

有关配置Xdebug的详细信息,请参阅配置Xdebug

从IntelliJ IDEA配置对DBGp代理服务器的访问

  1. 在主菜单中,选择:工具|Xdebug代理|注册IDE。

  2. 在打开的“Xdebug代理”对话框中,指定IDE密钥值(这应该是每个开发人员的唯一值,因为它标识调试会话),Xdebug代理服务器的主机和端口。

    ps pdgp寄存器ide
  3. 单击“确定”以连接到指定的代理服务器。服务器注册凭据,并确认连接。

    ps pdgp寄存器ide连接

    IntelliJ IDEA也会通知成功连接。

    ps pdgp寄存器ide成功
  4. 要更新现有凭据,请在主菜单中选择:工具|Xdebug代理|配置。在打开的“Xdebug代理”对话框中,编辑IDE密钥,主机和端口设置。

    要放弃当前凭据,请在主菜单中选择:工具|Xdebug代理|取消IDE注册。

在浏览器中启动调试会话

  1. 确保您使用的浏览器调试扩展设置为已注册的IDE密钥:

    ps pdgp ide键
  2. 在IntelliJ IDEA中,通过单击工具栏上的php图标调试听或者在主菜单上选择:运行|为PHP调试连接启用监听,来启用监听传入调试连接。这将确保IntelliJ IDEA在启动调试会话时作出反应并自动打开调试工具窗口。在启动脚本之前,确保设置了一个断点或者在“设置/首选项”对话框(Ctrl+Alt+S)的“调试”页面启用了PHP脚本选项的第一行的“中断”。

    通过在浏览器中刷新页面来启动调试会话。

    ps pdgp调试开始了

故障排除

远程文件路径未映射到项目中的任何文件路径

在某些情况下,调试器可以连接,但是我们会收到错误消息,指出远程和项目文件之间没有定义映射。这意味着IntelliJ IDEA无法确定哪个本地文件对应于正在调试的文件。

ps调试没有映射

我们可以通过单击“单击以设置路径映射”并提供必要的路径映射来解决此问题。

此外,我们可以使用配置与Web服务器同步中概述的技术配置这些映射。

无法建立连接,因为目标计算机主动拒绝它

  • 确保已向DBGp代理注册了IntelliJ IDEA ,并且它正在监听传入的调试器连接 。
  • 确保在IntelliJ IDEA和调试器书签或浏览器扩展中设置了正确的IDE密钥。
  • 是否存在阻止连接到DBGp代理的防火墙?如果是这样,请确保PHP Xdebug扩展可以连接到它,以及开发人员计算机。您可以使用http://canyouseeme.org或类似的服务来检查打开的入站端口。
  • 是否有防火墙阻止与IDE的连接?确保IntelliJ IDEA可以从DBGp代理计算机连接到。您可以使用http://canyouseeme.org或类似的服务来检查打开的入站端口。
  • DBGp代理应用程序绑定到错误的IP地址。使用0.0.0.0作为地址运行它,以便它绑定到DBGp代理服务器上的任何IP地址。例如,运行:pydbgpproxy -i 0.0.0.0:9001 -d 0.0.0.0:9000。

在 Intelij IDEA 中使用安装在同一台计算机上的 Xdebug 和 DBGp 代理测试多用户调试时,还需要验证一些其他内容:

  • IntelliJ IDEA绑定到错误的IP地址。当DBGp代理在同时运行IntelliJ IDEA的本地计算机上运行时,IDE可能使用了错误的网络子网。要解决此问题,请在主菜单上选择:工具|DBGp代理|配置...,并将DBGp代理服务器的IP地址设置为0.0.0.0。然后,尝试使用DBGp代理重新注册IntelliJ IDEA。
  • 存在端口冲突。在本地计算机上测试DBGp时,IntelliJ IDEA和DBGp都可能希望绑定到同一端口。要不是这种情况,可以通过配置DBGp以使用其他端口或者在“设置/首选项”对话框(Ctrl+Alt+S)的“语言和框架|PHP|调试”页面上更改IntelliJ IDEA的Xdebug端口。