Depura código de PHP con Komodo IDE y Xdebug

Tengo cerca de dos años utilizando Komodo Edit, la versión libre de Komodo IDE, para programar aplicaciones web y estoy bastante feliz con él. Cubre mis necesidades mínimas como tener un buen coloreado de código, auto-completado, marcadores, snippets y ser agradable a la vista.

Ahora (gracias a Hunk) comencé a utilizar Komodo IDE 5 que tiene muchas características importantes (en serio, muchas), pero entre ellas destaca la posibilidad de integrar un depurador completo (breakpoints, watchers, etc) que se integra perfectamente con Xdebug.

Otras opciones

Esto no es nada nuevo claro, he probado otras opciones como Vim + Xdebug, PDT (Eclipse). Con Vim la integración no se siente natural y ademas el nerd dentro de mi no es suficientemente bueno para recordar shortcuts que no utilizo continuamente.

PDT no me gusta porque esta basado en Eclipse, contra el que no tengo nada en contra, pero es demasiado generalista y Java nunca se ha distinguido por su ligereza. Zend Studio es el IDE oficial de los creadores de PHP, pero con el puro precio no quiero ni mirarlo, no lo he probado en años y ahora parece que se mudaron también a Eclipse.

¿Cómo funciona?

La cosa es así: Xdebug es una extensión de PHP que le da la habilidad de proveer muchos mas datos para depuración, esta extensión (por medio de «depuración por remoto») se comunicará directamente con Komodo, quien crea un proceso que espera por datos todo el tiempo.

Tu puedes usar tu aplicación en tu navegador favorito y Komodo sabrá cuando te has topado con un breakpoint, inmediatamente iniciará una sesión de depuración y avisará por ello.

Configurando Komodo IDE con Xdebug

Configurar es muy sencillo (en cualquier sistema operativo), si tienes Ubuntu la instalación de Xdebug es una simple linea.

sudo aptitude install php5-xdebug

Ubuntu habrá creado un archivo de configuración solo para Xdebug en la ruta /etc/php5/apache2/conf.d/xdebug.ini (si tu sistema operativo no separa las configuraciones lo meterás directo al php.ini), que sera cargado la próxima vez que reinicies tu servidor web.

En este archivo vamos a habilitar depuración por remoto agregando los siguientes parámetros:

xdebug.remote_enable=1
xdebug.remote_handler=dbgp
xdebug.remote_mode=req
xdebug.remote_host=127.0.0.1
xdebug.remote_port=9000

Existe un parámetro llamado xdebug.idekey al que debes de poner atención si varias personas comparten el mismo servidor web. El parámetro zend_extension Ubuntu ya lo debió haber agregado.

El parámetro xdebug.remote_port manda los datos por dicho puerto a tu IDE. Para decirle a Komodo que utilice ese puerto tienes que ir a Preferences -> Debugger -> Connection y agregarlo manualmente. Asegúrate de aprobar también la opción de Debug -> Listen for Debugging Connections para que levante el proceso que espere por datos.

Reinicia tu servidor web para que cargue la configuración de Xdebug y listo.

¡A probarlo!

Para probar solo tienes que agregar este parámetro en la URL:

?XDEBUG_SESSION_START=1

Aquí por ejemplo coloque un breakpoint en una aplicación hecha con CakePHP (que tiene bastantes capas tan solo contando el framework) y al probar con Firefox, Komodo abrió automáticamente la sesión de debuggeo.

URL con el parametro adicional

Komodo depurando

Tremendo no tener que depender de imprimir a pantalla suciamente cuando se necesita depurar algo complicado.