分步说明:如何执行 Xdebug 故障排除与客户端 IDE 的连接

2022-08-30 15:18:57

背景

将Xdebug与PHP和Komodo IDE以及Eclipse PDT一起使用。

Xdebug 已安装在服务器上并正常工作。之所以确认这一点,是因为 Xdebug 代码命令在插入到服务器上的 PHP 文件中时按预期工作。

问题

连接到客户端工作站不起作用,并且很难确定原因,因为它在有多个 IDE 时失败。

问题

最好有一个分步清单来排除故障,因为您知道Xdebug已安装并在服务器上工作,但客户端没有连接。

任何人都可以帮助添加此内容以制作全面的故障排除清单吗?

具体来说,是否有任何基本方法可以确保网络流量到达客户端,并以 IDE 期望看到数据的方式正确格式化?

  • SSH进入Web主机并尝试访问客户端:

    • 主机可以到达客户端吗?(平 -c 5 xxx.xxx.xxx.xxx )
    • 主机可以到达端口9000吗?(nmap -p 9000 xxx.xxx.xxx.xxx)
    • 如果以上两个成功,输出应该是多少?
    • 如果以上两个失败,下一步故障排除步骤是什么?
  • 验证客户端上基于软件的防火墙的设置

  • 验证 linux 主机上 iptables 的设置
  • 验证硬件防火墙 b/t 客户端和主机

目标

目标是找到一些解决方案,其中客户端计算机上的人员至少可以确认某些内容正在到达客户端,而不必确定IDE是否是问题所在,因为IDE是另一个可能引入问题的复杂性级别。


答案 1

这是我肯定想包含在Xdebug文档中的东西。我认为最好让很多人就此进行协作,因此我在 xdebug.org github存储库(https://github.com/derickr/xdebug.org/blob/master/html/docs/tutorials/troubleshooting.rest)中创建了一个文件来收集提示。随意分叉和扩展!

在Xdebug方面,在即将发布的版本(2.2)中,它已经在其xdebug.remote_log文件中转储了一些额外的诊断程序,例如它是否尝试连接以及连接是被接受还是被拒绝。


答案 2

您可以使用调试客户端实用程序来确定客户端是否可以接收 Xdebug 连接,如您在 Xdebug 文档中阅读的那样:

在启动脚本之前,您需要告诉客户端它可以接收调试连接,请参阅特定客户端的文档,了解如何执行此操作。要使用捆绑的客户端,只需在编译并安装它后启动它。您可以通过运行“调试客户端”来启动它。如果要使用 GDB 命令集来调试脚本,请确保使用与 Xdebug 1.3 捆绑在一起的调试客户端,因为与 Xdebug 2 捆绑在一起的调试客户端仅适用于 DBGp 命令集。当调试客户端启动时,它将显示以下信息,然后等待,直到调试服务器启动连接:

Xdebug Simple DBGp client (0.10.0)
Copyright 2002-2007 by Derick Rethans.
- libedit support: enabled
Waiting for debug server to connect.

建立连接后,将显示调试服务器的输出:

Connect
<?xml version="1.0" encoding="iso-8859-1"?>
<init xmlns="urn:debugger_protocol_v1"
      xmlns:xdebug="http://xdebug.org/dbgp/xdebug"
      fileuri="file:///home/httpd/www.xdebug.org/html/docs/index.php"
      language="PHP"
      protocol_version="1.0"
      appid="13202"
      idekey="derick">
  <engine version="2.0.0RC4-dev"><![CDATA[Xdebug]]></engine>
  <author><![CDATA[Derick Rethans]]></author>
  <url><![CDATA[http://xdebug.org]]></url>
  <copyright><![CDATA[Copyright (c) 2002-2007 by Derick Rethans]]></copyright>
</init>
(cmd)

您可以在此处找到有关 Xdebug 2 初始化协议的更多信息。
进一步的参考:如何检查xdebug安装
不幸的是,调试客户端实用程序仅以源代码形式提供,因此您必须自己构建可执行文件;这可以在Linux(参见INSTANCE)和Windows(使用Visual Studio - see debugclient.dsp)上完成。
XAMPP 在 中包含一个已编译的版本。xampp/php/debugclient.exe


推荐