IntelliJ IDEA:通过Xdebug代理进行多用户调试
通过Xdebug代理进行多用户调试
此功能仅在Ultimate版本中受支持。
以下内容仅在安装并启用PHP插件时有效!
在本节内容中介绍了xdebug.remote_host值。IntelliJ IDEA接受此连接,并可以通过它与Xdebug通信。Xdebug仅支持连接到单个IP地址,并且由于安全原因,不会自动连接回运行浏览器的IP地址。为了在多用户环境中调试PHP应用程序,Xdebug提供了一个所谓的DBGp代理。
使用代理时,PHP Xdebug扩展不再直接连接到IntelliJ IDEA,而是连接到DBGp代理服务器。然后,团队中的所有开发人员都会连接到该代理。每个开发人员都有一个单独的调试会话在该代理上运行,这使得可以在同一服务器上对同一代码进行多用户调试。
通过Xdebug代理(DBGp)服务器配置多用户调试
要通过Xdebug代理(DBGp)服务器配置多用户调试,请执行以下常规步骤:
- 下载并安装DBGp代理
- 确保在Web服务器上安装并配置了Xdebug
- 从IntelliJ IDEA配置对DBGp代理服务器的访问
- 在浏览器中启动调试会话
下载并安装DBGp代理
为了能够启动调试会话,您需要在服务器上运行DBGp代理,Web服务器本身以及所有开发人员计算机都可以访问该代理。我们可以在Web服务器上,同一网络中的计算机上或通过SSH隧道访问的计算机上安装代理。
在Komodo下载页面上,您可以找到特定于DBGp代理平台的Python二进制文件。下载所需的包并运行 pydbgpproxy 或 pydbgpproxy.exe文件。
在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代理将在启动时确认这些设置:
确保在Web服务器上安装并配置了Xdebug
在编辑器中打开活动的php.ini文件:
在“设置/首选项”对话框(Ctrl+Alt+S)中,单击“语言和框架”下的“PHP”。
在打开的PHP页面上,单击“CLI解释器”字段旁边的。
在打开的“CLI解释器”对话框中,“配置文件”只读字段显示活动php.ini文件的路径。单击“在编辑器中打开”。
确保至少指定了以下设置:
[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代理服务器的访问
在主菜单中,选择:工具|Xdebug代理|注册IDE。
在打开的“Xdebug代理”对话框中,指定IDE密钥值(这应该是每个开发人员的唯一值,因为它标识调试会话),Xdebug代理服务器的主机和端口。
单击“确定”以连接到指定的代理服务器。服务器注册凭据,并确认连接。
IntelliJ IDEA也会通知成功连接。
要更新现有凭据,请在主菜单中选择:工具|Xdebug代理|配置。在打开的“Xdebug代理”对话框中,编辑IDE密钥,主机和端口设置。
要放弃当前凭据,请在主菜单中选择:工具|Xdebug代理|取消IDE注册。
在浏览器中启动调试会话
确保您使用的浏览器调试扩展设置为已注册的IDE密钥:
在IntelliJ IDEA中,通过单击工具栏上的或者在主菜单上选择:运行|为PHP调试连接启用监听,来启用监听传入调试连接。这将确保IntelliJ IDEA在启动调试会话时作出反应并自动打开调试工具窗口。在启动脚本之前,确保设置了一个断点或者在“设置/首选项”对话框(Ctrl+Alt+S)的“调试”页面启用了PHP脚本选项的第一行的“中断”。
通过在浏览器中刷新页面来启动调试会话。
故障排除
远程文件路径未映射到项目中的任何文件路径
在某些情况下,调试器可以连接,但是我们会收到错误消息,指出远程和项目文件之间没有定义映射。这意味着IntelliJ IDEA无法确定哪个本地文件对应于正在调试的文件。
我们可以通过单击“单击以设置路径映射”并提供必要的路径映射来解决此问题。
此外,我们可以使用配置与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端口。
更多建议: