【问题标题】:Step-by-step: How to do Xdebug troubleshooting connection to client IDE一步一步:如何进行 Xdebug 故障排除连接到客户端 IDE
【发布时间】:2012-03-08 23:41:15
【问题描述】:

背景

将 Xdebug 与 PHP 和 Komodo IDE 以及 Eclipse PDT 结合使用。

Xdebug 已安装在服务器上并正常工作。这得到证实,因为 Xdebug 代码命令在插入服务器上的 PHP 文件时按预期工作。

问题

无法连接到客户端工作站,并且很难确定原因,因为它使用多个 IDE 失败。

问题

如果您知道 Xdebug 已安装并在服务器上运行,但客户端无法连接,则最好有一个分步清单来解决问题。

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

具体来说,是否有任何简单的方法来确保网络流量到达客户端,并且按照 IDE 期望查看数据的方式正确格式化?

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

    • 主机可以访问客户端吗? (ping -c 5 xxx.xxx.xxx.xxx)
    • 主机能否访问端口 9000? (nmap -p 9000 xxx.xxx.xxx.xxx)
    • 如果以上两个都成功了,输出应该是什么?
    • 如果以上两个都失败了,接下来的故障排除步骤是什么?
  • 验证客户端软件防火墙的设置

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

目标

我们的目标是找到一些解决方案,让客户端机器上的人至少可以确认某事正在到达客户端,而不必确定 IDE 是否是问题所在,因为 IDE 是另一个级别可能会带来问题的复杂性。

【问题讨论】:

标签: php ide network-programming xdebug


【解决方案1】:

注意远程调试会话的防火墙。我通过使用 telnet 来检查 9000 端口状态来诊断我的问题,并发现防火墙的预防措施。

【讨论】:

    【解决方案2】:

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

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

    【讨论】:

    • “它已经在它的 xdebug.remote_log 文件中转储了一些额外的诊断信息”我试过了,它根本没有记录任何东西。似乎不可能在 php 7.2.5 上将 Netbeans 与 xdebug 连接起来,而且任何日志文件中甚至都没有提示失败的原因。我什至尝试过 Netbeans 11.1。我总是得到“等待连接”
    【解决方案3】:

    Windows 用户禁用您的防火墙,然后重试。 如果可行,请允许 Java(TM) Platform SE 二进制文件通过防火墙,然后再次启用它。 它会工作得很好!

    感谢您提供的命令,它们对调试非常有用。

    【讨论】:

      【解决方案4】:

      您可以使用debugclient 实用程序来确定客户端是否可以接收Xdebug 连接,您可以在Xdebug documentation 中阅读:

      在你开始你的脚本之前,你需要告诉你的客户它 可以接收调试连接,请参考文档 具体客户如何做到这一点。使用捆绑的客户端 只需在编译和安装后启动它。你可以通过 运行“调试客户端”。如果要使用 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 初始化协议 here 的更多信息。
      进一步参考:Howto check xdebug installation.
      不幸的是,debugclient 实用程序仅以源代码形式提供,因此您必须自己构建可执行文件;这可以在 Linux(请参阅 INSTALL)和 Windows(使用 Visual Studio - 请参阅 debugclient.dsp)上完成。
      XAMPP 在xampp/php/debugclient.exe 中包含一个编译版本。

      【讨论】:

        【解决方案5】:

        Netbeans 有一个非常详尽的文档,其中还介绍了如何解决此类问题:

        http://wiki.netbeans.org/HowToConfigureXDebug

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2014-12-27
          • 1970-01-01
          • 2020-10-06
          • 2014-08-13
          • 1970-01-01
          • 2013-06-06
          相关资源
          最近更新 更多