如何让 XDebug 在 CLI 上与 PHPUnit 一起运行?

我已尝试运行以下 CLI 命令:

I've tried running the following CLI command:

phpunit -d xdebug.profiler_enable=on XYZTestCase.php

但它只是正常运行.谁能指出我正确的方向?谢谢!

but it just runs as normal. Can anyone point me in the right direction?? Thx!

这是 XDebug 设置:

Here's the XDebug settings:

xdebug

xdebug support => enabled
Version => 2.1.2

Supported protocols => Revision
DBGp - Common DeBuGger Protocol => $Revision: 1.145 $

Directive => Local Value => Master Value
xdebug.auto_trace => Off => Off
xdebug.collect_assignments => Off => Off
xdebug.collect_includes => On => On
xdebug.collect_params => 0 => 0
xdebug.collect_return => Off => Off
xdebug.collect_vars => Off => Off
xdebug.default_enable => On => On
xdebug.dump.COOKIE => no value => no value
xdebug.dump.ENV => no value => no value
xdebug.dump.FILES => no value => no value
xdebug.dump.GET => no value => no value
xdebug.dump.POST => no value => no value
xdebug.dump.REQUEST => no value => no value
xdebug.dump.SERVER => no value => no value
xdebug.dump.SESSION => no value => no value
xdebug.dump_globals => On => On
xdebug.dump_once => On => On
xdebug.dump_undefined => Off => Off
xdebug.extended_info => On => On
xdebug.file_link_format => no value => no value
xdebug.idekey => Nam => no value
xdebug.manual_url => http://www.php.net => http://www.php.net
xdebug.max_nesting_level => 100 => 100
xdebug.overload_var_dump => On => On
xdebug.profiler_aggregate => Off => Off
xdebug.profiler_append => Off => Off
xdebug.profiler_enable => Off => Off
xdebug.profiler_enable_trigger => Off => Off
xdebug.profiler_output_dir => c:/wamp/tmp => c:/wamp/tmp
xdebug.profiler_output_name => cachegrind.out.%t.%p => cachegrind.out.%t.%p
xdebug.remote_autostart => On => On
xdebug.remote_connect_back => Off => Off
xdebug.remote_cookie_expire_time => 3600 => 3600
xdebug.remote_enable => On => On
xdebug.remote_handler => dbgp => dbgp
xdebug.remote_host => localhost => localhost
xdebug.remote_log => no value => no value
xdebug.remote_mode => req => req
xdebug.remote_port => 9000 => 9000
xdebug.scream => Off => Off
xdebug.show_exception_trace => Off => Off
xdebug.show_local_vars => Off => Off
xdebug.show_mem_delta => Off => Off
xdebug.trace_format => 0 => 0
xdebug.trace_options => 0 => 0
xdebug.trace_output_dir =>  => 
xdebug.trace_output_name => trace.%c => trace.%c
xdebug.var_display_max_children => 128 => 128
xdebug.var_display_max_data => 512 => 512
xdebug.var_display_max_depth => 3 => 3

推荐答案

xdebug.profiler_enable 设置不能在运行时更改,只能在脚本开始时更改.

The xdebug.profiler_enable setting can't be changed at runtime but only at the start of script.

运行 phpunit -d foo=bar 只会导致 phpunit 调用 ini_set("foo", "bar"); 而这不起作用,因为该值不能在运行时更改.

Running phpunit -d foo=bar will just lead to phpunit calling ini_set("foo", "bar"); and that doesn't work since the value can't change at runtime.

请参阅:xdebug.profiler_enable

启用 Xdebug 的分析器,它在配置文件输出目录中创建文件.KCacheGrind 可以读取这些文件以可视化您的数据.无法使用 ini_set() 在脚本中设置此设置.如果您想选择性地启用分析器,请将 xdebug.profiler_enable_trigger 设置为 1 而不是使用此设置.

Enables Xdebug's profiler which creates files in the profile output directory. Those files can be read by KCacheGrind to visualize your data. This setting can not be set in your script with ini_set(). If you want to selectively enable the profiler, please set xdebug.profiler_enable_trigger to 1 instead of using this setting.

解决方案:

php -d xdebug.profiler_enable=on /usr/bin/phpunit XYZTestCase.php

通过将设置直接应用到 PHP 运行时而不是 phpunit,它将在脚本启动之前设置并且应该可以工作.

By applying the setting directly to the PHP runtime and not phpunit it will be set before the script starts and should work.

相关文章