我如何让XDebug在CLI中使用PHPUnit运行?
我试过运行下面的CLI命令:
phpunit -d xdebug.profiler_enable=on XYZTestCase.php
但它正常运行。 任何人都可以指出我在正确的方向? 谢谢!
这是XDebug设置:
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
设置不能在运行时更改,只能在脚本开始时更改 。
运行phpunit -d foo=bar
会导致phpunit调用ini_set("foo", "bar");
而这是行不通的,因为这个值在运行时不能改变。
请参阅: xdebug.profiler_enable
启用在configuration文件输出目录中创build文件的Xdebug的configuration文件。 这些文件可以通过KCacheGrind读取以可视化您的数据。 无法在脚本中使用ini_set()设置此设置。 如果您想select启用分析器,请将xdebug.profiler_enable_trigger设置为1,而不是使用此设置。
解:
php -d xdebug.profiler_enable=on /usr/bin/phpunit XYZTestCase.php
通过将设置直接应用于PHP运行时而不是phpunit,它将在脚本启动之前设置,并应该工作。
花了很多时间试图让这个工作。 想想这可能会改变我的生活!
我原本是试图做到这一点(即运行phpunit)在一个stream浪箱内,但意识到这是更容易(和更快的性能明智)跑在stream浪箱外。
首先我使用brew install php55 php55-xdebug
在Mac上使用自制软件brew install php55 php55-xdebug
(但是你的configuration可能不同,它应该仍然可以)。 我的网站是一个symfony2项目。
我试图遵循这个: phpunit vagrant xdebug让它在一个stream浪者的框内工作(几乎到了那里,但有一些问题)。
这些设置为我工作(运行网站从一个stream浪的箱子,但phpunit以外的stream浪者箱):
#xdebug.ini (parent machine, not inside vagrant box). [xdebug] zend_extension="/usr/local/Cellar/php55-xdebug/2.2.6/xdebug.so" #this will be different on your machine and will probably already be set xdebug.max_nesting_level = 250 xdebug.default_enable = 1 xdebug.idekey = "PHPSTORM" #seems to work without this too xdebug.remote_enable = 1
然后在命令行运行(这里我使用的是下载的phpunit,而不是链接到/ usr / local / bin(这似乎不起作用))
XDEBUG_CONFIG="idekey=PHPSTORM" bin/phpunit -c app
或者,您可以创build一个名为phpunit-debug(用于存储XDEBUG_CONFIG环境variables)的文件,如下所述: phpunit xdebug
你有没有尝试:
- 在你的php.ini中设置你的xdebug.idekey为你想要的(例如:blacktie)
-
重启你的服务器
-
通过添加-d xdebug.idekey = blacktie来调用脚本
phpunit -d xdebug.profiler_enable = on -d xdebug.idekey = blacktie XYZTestCase.php
希望有所帮助。
该设置的正确名称是带有下划线的xdebug.profiler_enable
。 改变你的命令:
phpunit -d xdebug.profiler_enable=on XYZTestCase.php
您可以通过预先设置环境variables来从命令行运行Xdebug,例如:
export XDEBUG_CONFIG="idekey=YOUR_IDE_KEY remote_host=localhost remote_enable=1"
这对我有效。
有关Xdebug文档的更多信息。
假设你的编辑器/独立debugging器在被cookie / post / getvariables触发时已经有了Xdebug的工作,添加一个shell脚本来做同样的触发,所以你不需要记住:
创build~/bin/php-cli-debug.sh
:
#!/bin/bash phpfile="$1" idekey=YOUR_IDE_KEY shift 1 php -d'xdebug.remote_enable=1' -d'xdebug.remote_autostart=1' -d'xdebug.idekey='"$idekey" -f "$phpfile" -- "$@"
然后在CLI上debugging东西,使用如下所示:
$ php-cli-debug.sh "$(which phpunit)" --bootstrap tests/bootstrap.php tests/FooBarTest | less -S
确保你的.bashrc
已经将~/bin
添加到你的$PATH
。