如何在单元测试中设置PHP + xDebug +(x)Unit + Eclipse以使用断点?

时间:2009-05-19 00:44:25

标签: php eclipse debugging xdebug simpletest

已经尝试了一段时间才能让它正常工作但没有运气。基本上,我有Eclipse(3.3)与PHP开发工具(PDT),PDT XDebug插件以及SimpleTest eclipse插件。

我想要做的是调试SimpleTest单元测试调用的代码。 SimpleTest显然可以看到XDebug,因为我可以生成代码覆盖率报告,但它不会在断点上停止。

编辑:应该添加XDebug和断点在eclipse中正常工作,而不是在SimpleTest调用时

有没有人成功设置过这个?有很多guff文档,很少有用的信息。

谢谢!

2 个答案:

答案 0 :(得分:3)

确保您的PHP版本具有正确的XDebug版本,并在php.ini文件的最开头添加:

[xdebug]
zend_extension=full_path_to_your_xdebug.so 
xdebug.default_enable=On
xdebug.remote_enable=On
xdebug.remote_handler="dbgp"
xdebug.remote_host="localhost"
xdebug.remote_port=9000

然后执行apachectl gracefulphpinfo并确保XDebug存在并处于活动状态。如果是的话,一切都应该正常。我知道这对我有用。

编辑我在阅读整个问题之前回答。

在运行脚本之前,您应该设置环境变量;

export XDEBUG_CONFIG="idekey=session_name"

有可能从php做到这一点,但我无法测试这个:

putenv('XDEBUG_CONFIG="idekey=session_name"');

你应该确保你正在使用的php二进制文件加载了XDebug扩展,在我的系统上apache模块有它,但默认的CLI解释器没有,但是我故意运行不同的版本。

这里有一些good documentation

答案 1 :(得分:1)

要进一步了解Kris的回答,如果您在同一台服务器上管理生产和开发环境,最好将xdebug设置转移到php includevirtualhosts的设置。 }专用于devtesting环境:

  • 虚拟主机的语法是

    <virtualHost ....>
    
      (...)
    
      # Xdebug ENV
      php_flag xdebug.auto_trace on
      php_flag xdebug.idekey session_name
      php_flag xdebug.profiler_enable_trigger 1
      php_flag xdebug.(...)
    
      (...)