Я пытаюсь использовать xdebug для профилирования приложения, написанного на php7.
Я написал скрипт, который устанавливает следующее ini
настройки:
ini_set('xdebug.trace_format',1); // Note: I tried 0 and 2 here as well
ini_set('xdebug.profiler_enable',1);
xdebug_start_trace('/tmp/cachegrind.out');
// RUN CODE HERE
xdebug_stop_trace();
Запуск скрипта создал файлы cachegrind, как я и ожидал:
root@host:/# ls /tmp | grep cachegrind
cachegrind.out.0028fd.xt
cachegrind.out.0072ab.xt
cachegrind.out.009b09.xt
cachegrind.out.025ac3.xt
Вот первые несколько строк файла cachegrind, чтобы формат был виден:
Version: 2.4.1
File format: 4
TRACE START [2016-10-28 05:26:57]
2 3784 1 0.242945 2692856
2 3785 0 0.242955 2692800 DI\Container->set 1 /path/public/api/index.php 100
2 3785 1 0.242966 2692800
2 3786 0 0.242973 2692800 spl_autoload_call 0 /path/public/api/index.php 103
3 3787 0 0.242982 2692896 Fuel\Core\Autoloader::load 1 /path/public/api/index.php 103
4 3788 0 0.242990 2692896 strpos 0 /path/fuel/core/classes/autoloader.php 219
Тем не менее, когда я пытаюсь открыть этот файл в qcachegrind
не открывается:
Сообщение об ошибке гласит: «Ошибка загрузки /path/to/cachegrind/file
: Неизвестный формат файла
Кто-нибудь знает, что здесь происходит? Я бы хотел использовать такой инструмент для профилирования своего приложения.
Я также выложил 30 долларов, чтобы попытаться открыть файл в MCG но это приложение вылетает сразу после открытия любого из этих файлов.
Как примечание: файл довольно большой, но не настолько большой, что я ожидаю, что приложения будут в шоке:
❯ ls -al /Users/johnpc/repos/cachegrind.out.094ffa.xt
-rw-r--r-- 1 johnpc staff 62744095 Oct 28 02:13 /Users/johnpc/repos/cachegrind.out.094ffa.xt
этот файл является файлом трассировки, а не файлом callgrind.
Мне кажется, вы устанавливаете trace_output_name и profiler_output_name в ini к той же строке или пытаетесь открыть неправильный файл. вам нужно установить переменные profiling_ * в ini.
см .: «Профилирование PHP-скриптов» в xdebug docs
Пример выходного профилирования выглядит следующим образом:
version: 1
creator: xdebug 2.1.1rc1
cmd: /Users/foo/bar/test1.php
part: 1
positions: line
events: Time
fl=php:internal
fn=php::microtime
когда у вас возникают проблемы из-за размера файла, вы также можете попробовать приложение из profilingviewer.com
Других решений пока нет …