背景
将Xdebug与PHP和Komodo IDE以及Eclipse PDT结合使用。
Xdebug已安装在服务器上并正常运行。这是因为Xdebug代码命令在插入服务器上的PHP文件时按预期工作。
问题
连接到客户端工作站不起作用,很难确定原因,因为它因多个IDE而失败。
问题
如果您知道Xdebug已安装并在服务器上运行,但客户端无法连接,那么请逐步检查清单以解决问题。
任何人都可以帮忙添加这个以制作全面的故障排除清单吗?
具体来说,是否有任何简单的方法来确保网络流量到达客户端,并且以IDE期望查看数据的方式正确格式化?
SSH进入网络主机并尝试访问客户端:
验证客户端上基于软件的防火墙的设置
目标
目标是找到一些解决方案,其中客户端计算机上的人员至少可以确认某些到达客户端而无需确定IDE是否是问题,因为IDE是另一个级别可能引入问题的复杂性。
答案 0 :(得分:13)
这是我肯定想要包含在Xdebug文档中的内容。我认为最好让很多人就此进行合作,所以我在xdebug.org github存储库(https://github.com/derickr/xdebug.org/blob/master/html/docs/tutorials/troubleshooting.rest)中创建了一个文件来收集提示。随意分叉和扩展!
在Xdebug方面,在即将发布的版本(2.2)中,它已经在其xdebug.remote_log文件中转储了一些额外的诊断,例如它是否尝试连接以及连接是被接受还是被拒绝。
答案 1 :(得分:10)
您可以使用debugclient实用程序来确定客户端是否可以接收Xdebug连接,您可以在Xdebug documentation中阅读:
在开始编写脚本之前,您需要告诉您的客户 可以接收调试连接,请参阅文档 关于如何做到这一点的具体客户。使用捆绑的客户端 只需在编译和安装后启动它。你可以开始吧 运行" debugclient"。如果要使用GDB命令集进行调试 您的脚本,请确保使用与Xdebug捆绑在一起的debugclient 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
中的编译版本。
答案 2 :(得分:6)
Netbeans有一个非常详尽的文档,其中还包括如何解决此类问题:
答案 3 :(得分:5)
Windows用户禁用防火墙,然后重试。 如果可行,请通过防火墙允许Java(TM)Platform SE二进制文件,然后再次启用它。 它会工作得很好!
感谢您的命令,它们在调试时非常有用。
答案 4 :(得分:1)
请注意用于远程调试会话的防火墙。我通过使用telnet签出9000端口状态来诊断我的问题,并发现防火墙阻止了这种情况。