Могу ли я распечатать все состояние программы на PHP?
PHP предоставляет некоторые впечатляющие возможности для самоанализа: get_defined_vars
, get_defined_functions
, get_defined_constants
, debug_backtrace
, и другие. По сути, они обеспечивают представление всего состояния программы: стека и кучи. Интересно, насколько полно представление о состоянии программы можно получить с помощью этих средств.
Куча и все определенные переменные в области видимости могут быть смоделированы как помеченный ориентированный граф. Так можно ли, например, написать что-нибудь, что даст мне описание этого на Graphviz/DOT? Я представляю что-то похожее на диаграммы в этой статье о том, "Как PHP управляет переменными", или диаграммы на странице руководства PHP по сбору мусора.
4 ответа
Если вы сгенерируете профиль, вы можете поместить результаты в kcachegrind или wincachegrind, чтобы получить представление карты распределения памяти, времени, потраченного на каждую функцию, и других вещей.
Оформить заказ xdebug плюс расширение xdebug chrome. https://chrome.google.com/webstore/detail/xdebug-helper/eadndfjplgieldjbigjakmdgkmoaaaoc?hl=en
Расширение может использоваться для включения профилирования / отладки для php. Вы можете связать его с eclipse или любым другим ide, который поддерживает xdebug для отладки.
Если вы сгенерируете профиль, вы можете поместить результаты в kcachegrind или wincachegrind, чтобы получить представление карты распределения памяти, времени, потраченного на каждую функцию, и других вещей.
get_defined_vars
get_defined_functions
get_defined_constants
Есть ли способ получить пользовательские php-функции, переменные, константы из php-файла? Следующие функции не лучший способ сделать это, потому что они получают все декальдированные функции / переменные / константы (с сотнями встроенных констант php и внутренних функций php
Я не знаю, существуют ли какие-либо инструменты для этого, но вы обязательно должны проверить профилировщик xdebug http://xdebug.org/docs/profiler сочетании с kcachegrind. Это даст вам визуализацию всего стека: каждой вызванной функции, сколько раз она была вызвана и сколько времени она / они взяли.