Использовать данные профилирования Xdebug2 при отладке PHP в Ubuntu

Мой вопрос основан на этой статье.

Как вы можете создать данные профилирования для PHP-кода с помощью Xdubug2 и затем поместить их в такое приложение, как KCacheGrind?

Я успешно использовал Xdebug в своем Ubuntu, так как он выделяет мои сообщения об ошибках в браузере. Тем не менее, я не нашел никакого терминального инструмента, как xdebug,

Я хотел бы иметь визуальное представление моего кода PHP, как это

альтернативный текст

3 ответа

Решение

Добавьте эту строку в ваш php.ini

xdebug.profiler_enable = 1

Затем, если вам случится запустить PHP через веб-сервер, вам нужно перезапустить веб-сервер, иначе изменение конфигурации не будет обнаружено.

Если вы используете PHP через cli, перезагрузка, конечно, не требуется.

Теперь, когда вы запускаете свой PHP-скрипт, файл cachegrind.out.PID создается в каталоге, заданном параметром php.ini xdebug.profiler_output_dir. По умолчанию это / tmp.

Это файлы, которые kcachegrind может загрузить.

Есть и другие способы вызвать это поколение профилей, вы можете прочитать о них на http://www.xdebug.org/docs/all_settings

Взгляните на WebGrind ( http://code.google.com/p/webgrind/)

Я столкнулся с подобной ситуацией, когда у меня был только доступ к терминалу, а не визуальная среда для тестирования. Еще хуже, я использовал Windows-машину и Putty.

Доступные решения:

  1. Установка WebGrind ( http://code.google.com/p/webgrind/)
  2. Запустите Xdebug и скопируйте файлы cachegrind.out на компьютер, на котором у вас есть средство просмотра cachegrind.

Для меня ответом было SCP-файлы cachegrind на мой локальный компьютер с Windows и использование WinCachegrind для их просмотра. Вы можете отправить их на свой Linux-бокс и запустить KCacheGrind для файлов. Недостатком этого является то, что у вас может не быть одинаковой файловой структуры, поэтому вы не сможете просматривать исходный код. Если у вас есть источник на локальном компьютере, или вы можете получить его там, вы можете это исправить. Откройте файлы cachegrind в vim (или другом редакторе) и выполните глобальный поиск и замените пути, чтобы изменить их на правильный исходный путь на вашем локальном компьютере.

Я надеюсь, что это то, что вы искали.

РЕДАКТИРОВАТЬ на адрес комментария:

Если вы работаете, чтобы получить файл callgrind, который несколько отличается. Для этого вам нужно работать в Linux (а я думаю, что вы есть) и иметь в наличии программы callgrind и valgrind. Последнее, что нужно здесь предположить, это то, что вы используете PHP как мод Apache, а не каким-то другим способом. Используйте инструмент callgrind против запуска apache, а затем запустите запрос в браузере. Это даст вам подробную информацию не только о дереве вызовов php, но и о многих вещах в Apache, которые могут вызывать проблемы.

вот пример

sudo callgrind --dump-instr=yes --trace-jump=yes -v /usr/sbin/httpd -X

-X запустит apache в режиме отладки только с одним потоком. Отсюда откройте веб-браузер и нажмите нужный скрипт php. Затем вернитесь и выключите Apache. Это также должно закончить анализ callgrind.

Если вам не нужен apache или веб-браузер, вы можете попробовать запустить callgrind с помощью команды php

sudo callgrind --dump-instr=yes --trace-jump=yes -v /usr/sbin/php my_php_script.php

Это должно дать вам те же результаты, но без всего, что связано с Apache.

Другие вопросы по тегам