2012-02-17 40 views
23

背景步骤一步:如何做Xdebug的故障排除连接到客户端IDE

使用Xdebug的PHP和科莫多IDE和Eclipse PDT。

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

问题

连接到客户端工作站不能正常工作,而且很难确定为什么,因为它未能与多个IDE中。

问题

这将是很好有一个一步一步的清单来解决的情况下,你知道的Xdebug安装并在服务器上的工作,但客户端无法连接。

任何人都可以帮助添加到此作出全面的故障排除清单?

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

  • SSH到虚拟主机,以期达到客户:

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

  • Linux主机上验证的iptables设置
  • 验证硬件防火墙B/T客户端和主机

GOAL

目标是找到一些解决方案,客户端机器上的人员至少可以确认东西到达客户端而不必确定IDE是否是问题,因为IDE是可能引入问题的另一个复杂等级。

+2

这是我一定想包含在Xdebug文档中的东西。我认为最好让很多人就此进行协作,所以我在xdebug.org github存储库中创建了一个文件(https://github.com/derickr/xdebug.org/blob/master/html/docs /tutorials/troubleshooting.rest)收集提示。 – Derick 2012-02-22 09:43:12

+0

您提到'xdebug'已安装,因为这些命令正常工作。我的直觉是,xdebug只启用了php-cli,而不是php的apache ...你能证实这种情况吗? – Khez 2013-01-26 03:39:52

+0

相关问题: http://stackoverflow.com/questions/18540463/how-to-enable-xdebug-with-nginx http://stackoverflow.com/questions/11563280/php-remote-debugging-xdebug-无法连接到jetbrains-php-storm-client http://stackoverflow.com/questions/1946643/why-does-xdebug-not-establish-connection-with-netbeans – Kzqai 2016-11-21 23:19:47

回答

13

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

在Xdebug方面,在即将推出的版本(2.2)中,它已经在其xdebug中转储了。remote_log会提供一些额外的诊断信息,例如是否尝试连接以及连接是否被接受或拒绝。

10

可以使用debugclient实用程序来确定,如果客户端可以接收Xdebug的连接,你可以在Xdebug documentation阅读:

在你开始你的脚本,你需要告诉你的客户,它 可以接收调试连接,具体客户端请参考 的文档如何做到这一点。要使用捆绑客户端 ,只需在编译和安装之后启动即可。您可以通过运行“debugclient”的 启动它。如果您想使用GDB命令集来调试 您的脚本,请确保您使用与Xdebug 1.3捆绑在一起的调试客户端,因为与Xdebug 2捆绑在一起的客户端仅适用于DBGp命令集。 当debugclient启动时,它会显示以下信息, 然后等待直到建立连接,由调试服务器启动:

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

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

谢谢你的指令,它们对调试非常有用。