使用XDebug进行PHP远程调试

时间:2011-02-01 17:02:52

标签: php xdebug remote-debugging eclipse-pdt

我有很多关于如何在远程服务器上使用xdebug和eclipse调试php文件的问题。

我想要实现的是: 我有一个远程服务器(使用WAMPP(appache(端口8502),php,mysql(端口8501)等)),我想从我的本地PC上用Eclipse PDT调试php文件。

我准备了以下内容

  • 已安装的Eclipse PDT(构建ID:
    20100617-1415)在我的本地电脑上
  • 安装并激活了xdebug 远程服务器(可在(让我们) 说)111.111.111.111:8502) 以下配置 的php.ini

[XDebug]
zend_extension = C:\TYPO3_4.4.6\php\ext\php_xdebug-2.1.0-5.3-vc6.dll
xdebug.profiler_output_dir = "C:/xampp/tmp/xdebug"
xdebug.profiler_output_name = "cachegrind.out.%p"
xdebug.profiler_enable = 0
xdebug.profiler_append=0
xdebug.extended_info=1
xdebug.remote_enable=1
xdebug.remote_handler=dbgp
xdebug.remote_mode=req
xdebug.remote_host=127.0.0.1
xdebug.remote_port=9000
xdebug.idekey=ECLIPSE_DBGP
xdebug.remote_log="C:\TYPO3_4.4.6\tmp\xdebug\xdebug_remote.log"
xdebug.show_exception_trace=0
xdebug.show_local_vars=9
xdebug.show_mem_delta=0
xdebug.trace_format=0

  • 在Eclipse中我添加了服务器 “窗口 - PHP - PHP服务器”与 网址“http://111.111.111.111:8502”和 路径映射 - 服务器上的路径: “C:\ TYPO3_4.4.6 \ htdocs”和路径 工作区:“/ debug_test”(我创建了一个 PHP项目名为“debug_test”)。

  • 我还将PHP - Debug更改为以下内容:

    • PHP-Debugger:XDebug
    • 服务器:111.111.111.111
    • PHP可执行文件无定义
  • 接下来我添加了调试配置(PHP网页):

    • 服务器调试器:XDebug
    • PHP服务器:111.111.111.111
    • 文件:/debug_test/debug.php
    • 在第一行休息:关闭
    • 自动生成:开启
  • 我在远程服务器上的C:\ TYPO3_4.4.6 \ htdocs \ debug_test \和我的PHP项目(“debug_test”)中创建了文件debug.php。

如果我现在运行“Debug”并选择我的配置文件,网页会弹出(在外部浏览器中)URL http://111.111.111.111:8502/debug_test/debug.php?XDEBUG_SESSION_STOP_NO_EXEC=ECLIPSE_DBGP&KEY=129657398681515并且页面被(完全)加载为普通页面,但是无法调试它。即使我切换到PHP调试 - 查看并插入任何断点或类似的东西,也没有什么比调试更好。

如何使用xdebug和eclipse pdt进行远程调试?

干杯, Cheeesi

1 个答案:

答案 0 :(得分:0)

你确定你的服务器可以通过127.0.0.1到达你的XDebug-Client / PC吗?

B / c如果我理解正确,您的PC上没有安装您的服务器。 OTOH然后我想知道你如何建立ypur XAMPP系统。 B / c然后通常所有东西都在本地安装。

浏览器的行为也很重要。如果在通过Eclipse调用XDebug会话后,您的站点已完全加载,那么Eclipse中的XDebug-Client无法访问您的服务器。如果您看到您的浏览器尝试加载页面但它停止运行,那么您的客户端可能会告诉服务器启动XDebug会话,但服务器上的XDebug无法连接回来。

您为服务器指定的端口8502也有点奇怪,但在给定相应配置的情况下可能是正确的。

祝你好运

拉​​斐尔

编辑:首先尝试启用第一行中断