Hoy configuraremos nuestro Ubuntu para empezar a hacer debug de PHP con Sublime Text 2 y Xdebug.
El proceso es bastante simple y en su mayor parte se ha extraído del README del proyecto SublimeXdebug en github.
1Instalar xdebug
Instalaremos el paquete estándar con:
sudo apt-get install php5-xdebug
Tras la instalación ajustaremos la configuración de Xdebug:
sudo gedit /etc/php5/conf.d/xdebug.ini
En ese archivo agregaremos si aún no están las siguientes líneas:
xdebug.remote_enable=On xdebug.remote_host="localhost" xdebug.remote_port=9000 xdebug.remote_handler="dbgp"
Eso activará el debug remoto para localhost en el puerto 9000. Por último reinicia apache:
sudo service apache2 restart
2Descargar y descomprimir Python 2.6
En los últimos sistems Ubuntu no puedes instalar el antigua versión 2.6 de Python. Necesitaremos descargarla y descomprimirla en el directorio de Sublime Text 2.
Descargamos el paquete python 2.6 para desde el repositorio de Ubuntu Lucid. Hay que descargar la versión que se ajusta a nuestro sistema (amd64 para sistemas 64bits y i386 para sistemas de 32bits). Yo he descargado la versión amd64 en mi directorio de usuario:
cd ~ wget http://ubuntuarchive.eweka.nl/ubuntu//pool/main/p/python2.6/python2.6_2.6.5-1ubuntu6_amd64.deb
Ahora extraeremos el contenido del archivo en un directorio llamado python2.6.
Para la versión amd64:
dpkg-deb -x python2.6_2.6.5-1ubuntu6_amd64.deb python2.6
Para la versión i386:
dpkg-deb -x python2.6_2.6.5-1ubuntu6_i386.deb python2.6
Finalmente copiaremos el directorio usr/lib/python2.6 desde el directorio que acabamos de crear al directorio donde tenemos Sublime Text 2 (en mi caso ~/programas/sublime_text2 ):
cp -R python2.6/usr/lib/python2.6/ ~/programas/sublime_text2/lib/
3Instalar el paquete SublimeXdebug
Instalaremos SublimeXdebug desde el Package Control de Sublime. Si necesitas ayuda para instalar Package Control puedes leer nuestro artículo:
Sublime Text 2 for Joomla development
Con Package Control instalado instalaremos SublimeXdebug con:
Ctrl + Shift + P > install > Xdebug
Ahora reinicia Sublime Text 2. Tu sistema ya está listo para empezar a hacer debug.
4Instalar y configurar un debugger remoto
Ahora sólo necesitamos una herramienta para poder hacer debug remoto. He probado sin problemas Firefox easy Xdebug y Chrome Xdebug Helper .
En este artículo usaremos la extensión Chrome Xdebug. Tras descargarla e instalarla tienes que reiniciar Chrome. Tras reiniciarlo verás un nuevo icono junto a la barra de direcciones:
Haciendo click en el activarás/desactivarás el debug remoto. Pero primero necesitamos ajustar la extensión para que use la sessionkey de Sublime Text.
En Chrome ve a Herramienras > Extensiones
Y abre las opciones de Xdebug Helper:
Como ves sólo hemos agregado la sessionkey "sublime.xdebug" y activado el debug sólo para localhost.
Listo. Podemos empezar el debug!
5Debug de ejemplo
En Sublime hemos creado un archivo test.php en el directorio www/test con este contenido PHP:
for ($i=0; $i < 50; $i++) { echo 'This is the line: ' . ($i + 1) . '
'; }
Pon el cursor en la línea del "echo" y presiona Ctrl + F8. Aparecerá un punto junto al número de línea que indica la creación de un punto de ruptura (breakpoint).
Ahora empieza el debug con Shift + F8 > Start debugging. Sublime empezará a esperar una conexión de debug remota .
En Chrome navega hasta http://localhost/test/test.php y haz click en el botón del Xdebug Helper hasta que se ponga verde. Entonces recarga la página y notarñas que se queda como congelada. Esto es porque está capturada por Sublime.
En Sublime empieza a recorrer el bucle for con Ctrl + Shift + F5. Verás que los valores de las variables cambian en la pestañaXdebug Context.
6Combinaciones de teclas de SublimeXdebug
Shift+f8
: Abrir el panel rápido de XDebugf8
: Abrir el panel rápido de XDebug cuando el debugger está conectadoCtrl+f8
: Activar/desactivar punto de rupturaCtrl+Shift+f5
: Run to next breakpointCtrl+Shift+f6
: Paso hacia delanteCtrl+Shift+f7
: Paso hacia dentroCtrl+Shift+f8
: Paso hacia fuera
7Referencias
https://github.com/Kindari/SublimeXdebug
http://stackoverflow.com/questions/11779284/xdebug-sublime-text-2-and-kindarisublimexdebug