GEBEN es una extension para emacs que agrega un entorno de depuracion remoto para Emacs. Permite depurar scripts interactivamente, desde dentro de emacs, agregando breakpoints, inspeccionando el valor de las variables, etc. Actualmente el protocolo DBGp es soportado en varios lenguages de scripting con la ayuda de extensiones.
- PHP con Xdebug
- Perl, Python, Tcl y Ruby con las extensiones de Komodo Debugger
De esta forma, instalando las extensiones, GEBEN para emacs nos permite depurar interactivamente los lenguages PHP, Perl, Python, Tcl y Ruby.
En este articulo, la instalacion y configuracion paso a paso para depurar scripts de PHP en forma interactiva con emacs + GEBEN + Xdebug.
- Para depurar scripts PHP, necesitaras intalar PHP, Xdebug y opcionalmente un servidor web. Por favor, visita los sitios oficiales para obtener los paquetes (o instala los paquetes a traves de tu distribucion de GNU/Linux favorita)
- Para depurar Perl, Python, Ruby y Tcl con GEBEN, se necesita instalar las extension de depuracion Komodo. Estas extensiones seran de gran ayuda.
El debugger remoto Xdebug permite examinar estructuras de datos, interactivamente ir linea por linea y depurar el codigo. Hay dos protocolos diferentes para comunicarse con el debugger: el viejo protocolo tipo GDB el cual esta implementado en Xdebug 1.3 y 2; y el nuevo protocolo DBGp el cual esta implementado en Xdebug 2.
Instalacion Xdebug
Instalar el paquete php5-xdebug:
Para habiliar el depurador Xdebug es necesario hacer algunas configuraciones en el archivo php.ini. Estas configuraciones son xdebug.remote_enable para habilitar el debugger, xdebug.remote_host y xdebug.remote_port para configrar la direccion IP y puerto donde el debugger debe conectarse, y xdebug.remote_handler para configurar cual backend de depuracion usar (“gdb” o “dbgp”). Si se quiere iniciar una sesion cuando una situacion de error ocurre (error php o excepcion) entonces es necesario cambiar la configuracion xdebug.remote_mode. Los valores permitidos para esta configuracion son “req” (el valor por defecto) el cual hace al depurador iniciar una sesion tan pronto como un script es iniciado, o “jit” cuando una sesion debe solo iniciarse debido a un error.
Despues de realizar estos cambios, Xdebug todavia no iniciara una sesion de depuracion automaticamente cuando un script PHP es ejecutado. Es necesario activar el depurador dependiendo si se corre un script de la linea de comandos, o se esta invocando una pagina en un browser:
- Cuando se corra un script desde la linea de comandos se necesita setear una variable de entorno, asi:
Tambien se puede configurar xdebug.remote_host, xdebug.remote_port, xdebug.remote_mode and xdebug.remote_handler en este misma variable de entorno. Todas estas configuracion tambien pueden ser seteadas en el archivo php.ini.</li>
Si queremos depurar un script iniciado a travez de un browser, simplemente agregamos XDEBUG_SESSION_START=session_name como un parametro en la URL. (ver ejemplos mas abajo)
habilitando el depurador
Agregar las siguientes lineas al archivo php.ini :
/etc/php5/apache2/php.ini
Reiniciar el servidor apache, para que la configuracion surta efecto.
Instalacion de geben para Emacs
-
Descargar el paquete de la siguiente URL: Geben on Emacs
-
Compilar e instalar la extension en una ruta donde emacs la pueda encontrar. Basicamente, sudo make install hace todo el trabajo.</p>
- Editar el archivo ~/.emacs y agregar
Ejemplo de una sesion de depuracion (debugging)
Aqui hay un ejemplo de depuracion PHP.
- Ejecutar Emacs.
- Iniciar geben, tipear: M-x geben
- Acceder a la pagina PHP a depurar, con cualquier browser. Puede que necesites agregar un parametro query ‘XDEBUG_SESSION_START’ si Xdebug esta configurado para requerir disparador manual para comenzar una sesion de depuracion remota. ejemplo:http://misitio.com/test.php?XDEBUG_SESSION_START=1
- Pronto el servidor y GEBEN estableceran conexion y una sesion de depuracion. Entonces Emacs carga el codigo fuente del script de la pagina inicial en su buffer.
- Ahora el buffer estará bajo el modo menor ‘geben-mode’. Se puede controlar el buffer con varias teclas:</p> <pre>spc step into/step over i step into o step over r step out g run b set a breakpoint at a line B set a breakpoint interactively u unset a breakpoint at a line \C-b display breakpoint list t set redirection mode \C-u t change redirection mode v display context variables w where q stop</pre>
Cuando se presione una tecla que no este ligada al geben-mode, GEBEN
nos preguntara para editar el script original. Al contestar ‘yes’ GEBEN intentará cargar el archivo script via ‘TRAMP’.</li>
* Para terminar la sesion de depuracion y salir de GEBEN, tipear: C-u M-x geben</ol>
screenshot: inspeccionando variables de contexto:
screenshot: pantalla dividida y seteando un breakpoint (linea roja) :
Profiling
Tambien te puede interesar …
Otros IDES o herramientas para depuracion de PHP
- VIM plugin (Tutorial) (Editor Plugin).
- Eclipse plugin, which has been submitted as an enhancement for the PDT (IDE).
- NetBeans (IDE: Windows, Linux, Mac OS X and Solaris.
- PHPEclipse (Editor Plugin).
- Protoeditor (Editor: Linux).
Dejanos tus comentarios
Tuviste problemas instalando la extension ? Tenes alguna duda ? Queres hacer una sugerencia o correccion ? ¿ Y vos, que herramienta usas para depurar PHP ?
este documento ha sido publicado bajo la siguiente licencia: “Verbatim copying and distribution of this entire article are permitted in any medium provided this notice is preserved.”