Curso POO PHP Depuración

De Manuais Informática - IES San Clemente.
Ir a la navegación Ir a la búsqueda

Ferramentas de depuración

Das ferramentas dispoñibles que posibilitan a depuración en linguaxe PHP, imos a ver a extensión Xdebug. É unha extensión de código libre, baixo licenza propia (The Xdebug License, baseada na licenza de PHP) que se integra perfectamente co IDE NetBeans.

Se a depuración está activada, Xdebug controla a execución dos guións en PHP. Pode pausar, continuar e deter os programas en calquera momento. Cando o programa está pausado, Xdebug pode obter información do estado de execución, incluíndo o valor das variables (pode mesmo cambiar o seu valor).

Xdebug é un servidor que recibe instrucións dun cliente, que no noso caso será NetBeans. Desta forma, non é necesario que o contorno de desenvolvemento estea na mesma máquina que o servidor PHP con Xdebug.

Instalación de Xdebug

Aínda que existen diversas formas para realizar a instalación de Xdebug. Probablemente a máis sinxela é a través do repositorio de extensións PECL. Necesitas polo tanto asegurarte de que PECL está dispoñible na túa instalación de PHP. Para instalalo dende os repositorios de Ubuntu, executa dende unha consola:

# sudo apt-get install php-pear

Ademais, para poder compilar as extensións que descargues con PECL, debes instalar o paquete coas ferramentas de desenvolvemento php5-dev. Inclúe dous programas necesarios para instalar Xdebug: phpize e php-config.

# sudo apt-get install php5-dev

Se todo foi ben, xa tes o sistema preparado para instalar Xdebug.

# sudo pecl install xdebug

Ao finalizar a instalación verás unha mensaxe semellante á seguinte:

Build process completed succesfully
Installing '/usr/lib/php5/20090626+lfs/xdebug.so'
configuration option "php.ini" is not set to php.ini location
You should add "extension=xdebug.so" to php.ini

Nesa pantalla figura a ruta en que se instalou a extensión (ficheiro xdebug.so). Ademais indícache que debes modificar o ficheiro php.ini para activala. Abre polo tanto o ficheiro php.ini da túa instalación de PHP, e engade as seguintes liñas ao final.

[xdebug]
zend_extension="/usr/lib/php5/20090626+lfs/xdebug.so"
; Opcións de configuración
xdebug.remote_enable=on
xdebug.remote_handler=dbgp
xdebug.remote_host=localhost
xdebug.remote_port=9000

Axusta a ruta anterior ao ficheiro xdebug.so para que sexa a mesma que obtiveches no teu sistema tras instalar a extensión. Por último, recorda reiniciar o servidor web sempre que modifiques o ficheiro php.ini para aplicar os cambios.

# sudo /etc/init.d/apache2 restart

Depuración de código PHP

Entre as características de depuración que incorpora Xdebug destacan:

  • Creación de rexistros coas chamadas a funcións que se produzan, incluíndo parámetros e valores devoltos.
  • Creación de rexistros de optimización, que permitan analizar o rendemento dos programas.
  • Depuración remota.

Imos centrarnos na depuración remota utilizando NetBeans como cliente. Utilizando os menús, botóns, ou a combinación de teclas axeitada, podes iniciar a depuración do proxecto actual (Ctrl+F5, comezando polo arquivo definido na configuración de execución deste) ou directamente a do arquivo que teñas aberto no editor (Ctrl+May+F5).

Unha vez iniciada a depuración, ábrese a aplicación no navegador e modifícase a aparencia do editor. Nas barras de ferramentas e de menús, podes controlar a execución coas opcións habituais (continuar, deter, paso a paso, etc.). Na parte inferior móstranse tres zonas novas con información sobre as variables que haxa definidas nese instante, a pila de chamadas e os puntos de interrupción.

En calquera momento podes engadir ou eliminar un punto de interrupción nunha liña de código simplemente pulsando co rato na zona esquerda do editor, sobre os números das liñas.

Tamén podes modificar o valor das variables editando directamente sobre a zona en que se mostran.

Mentres estás a depurar unha aplicación, a execución deterase antes de executar a primeira liña de cada unha das páxinas que se vaian abrindo. Este é o comportamento por defecto en NetBeans. Nas opcións do ámbito (Ferramentas - Opcións - PHP) podes modificalo para que se deteña só nos puntos de ruptura que indicases.


--Víctor Lourido 01:39 27 jun 2013 (CEST)