Xdebug is a PHP extension created by Derick Rethans, one of the PHP core developers. Webgrind is an Xdebug profiling web frontend in PHP5. It implements a subset of the features of kcachegrind and installs in seconds and works on all platforms. For quick’n’dirty optimizations it does the job. This article will show how to install XDebug and WebGrind into your development environment for development work.
Install XDebug
yum install php-pear yum install php-devel pecl install xdebug
Add XDebug to PHP
vi /etc/php.d/xdebug.ini ### Add the following lines ### zend_extension=/usr/lib64/php/modules/xdebug.so xdebug.default_enable=1 xdebug.scream=1 xdebug.profiler_enable=1 xdebug.profiler_output_dir=/home/tmp/xdebug
Restart apache.
To test it, create a testxdebug.php file with the following content
<?php function test() { echo "Called @ ".xdebug_call_file().":".xdebug_call_line()." from".xdebug_call_function() . PHP_EOL; } test(); ?>
, and run php -e testxdebug.php
Install WebGrind
wget https://github.com/jokkedk/webgrind/archive/master.zip mv master master.zip unzip master.zip ### change config file #### vi webgrind-master/config.php
- Done, run webgrind from your browser to check debugging/profiling information
- We can also install KCacheGrind to view debug information on Linux desktop.
Some Notes
- By default, XDebug does not enable profiling, we must enable it explicitly as in the above configuration
- If just running XDebug for some specific URL/file, we can use configuration
xdebug.profiler_enable_trigger = 1 xdebug.profiler_enable=0
on .ini file, and then we can enable profiling with GET/POST parameter XDEBUG_PROFILE, e.g. http://localhost/samplepage.php?XDEBUG_PROFILE:
- If we need to display graph with WebGrind, we must have graphviz installed:
yum install graphviz*
, and then, change the configuration file