{"id":4077,"date":"2024-11-21T22:45:45","date_gmt":"2024-11-21T21:45:45","guid":{"rendered":"https:\/\/davidperezgar.com\/?p=4077"},"modified":"2025-11-14T08:54:47","modified_gmt":"2025-11-14T07:54:47","slug":"como-instalar-y-configurar-xdebug-en-mac-para-depurar-tus-aplicaciones-php","status":"publish","type":"post","link":"https:\/\/davidperezgar.com\/es\/como-instalar-y-configurar-xdebug-en-mac-para-depurar-tus-aplicaciones-php\/","title":{"rendered":"C\u00f3mo instalar y configurar Xdebug en Mac para depurar tus aplicaciones PHP"},"content":{"rendered":"\n<h3 class=\"wp-block-heading\">\u00bfQu\u00e9 es Xdebug y para qu\u00e9 sirve?<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Si trabajas con PHP, seguramente te has enfrentado a errores complejos que parecen imposibles de resolver con simples <code>var_dump()<\/code> o <code>echo<\/code>. Aqu\u00ed es donde entra en juego <strong>Xdebug<\/strong>, una herramienta imprescindible para cualquier desarrollador PHP que quiera mejorar su flujo de trabajo y solucionar problemas de manera m\u00e1s eficiente.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Xdebug<\/strong> es una extensi\u00f3n de PHP dise\u00f1ada para ofrecer herramientas avanzadas de depuraci\u00f3n y an\u00e1lisis del rendimiento de tu c\u00f3digo. Veamos algunas de sus funciones m\u00e1s destacadas y c\u00f3mo pueden ayudarte en tu d\u00eda a d\u00eda como programador.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\">1. <strong>Depuraci\u00f3n en tiempo real<\/strong><\/h4>\n\n\n\n<p class=\"wp-block-paragraph\">Con Xdebug, puedes olvidarte de los m\u00e9todos rudimentarios como imprimir variables por todas partes. Te permite integrar un depurador interactivo en tu entorno de desarrollo (como PhpStorm, Visual Studio Code o NetBeans) para:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li class=\"\">Poner puntos de interrupci\u00f3n (breakpoints) y detener la ejecuci\u00f3n en l\u00edneas espec\u00edficas del c\u00f3digo.<\/li>\n\n\n\n<li class=\"\">Inspeccionar valores de variables en diferentes momentos del programa.<\/li>\n\n\n\n<li class=\"\">Ejecutar paso a paso el flujo del c\u00f3digo para entender exactamente qu\u00e9 ocurre.<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">Esto no solo <strong>acelera la resoluci\u00f3n de errores<\/strong>, sino que tambi\u00e9n te ayuda a comprender mejor c\u00f3mo interact\u00faan las diferentes partes de tu aplicaci\u00f3n.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\">2. <strong>Seguimiento de pila (Stack Trace)<\/strong><\/h4>\n\n\n\n<p class=\"wp-block-paragraph\">Cuando ocurre un error o una excepci\u00f3n, Xdebug genera un seguimiento de pila detallado. Esto incluye informaci\u00f3n como:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li class=\"\">Qu\u00e9 funciones se llamaron antes del error.<\/li>\n\n\n\n<li class=\"\">En qu\u00e9 archivos y l\u00edneas ocurri\u00f3 el problema.<\/li>\n\n\n\n<li class=\"\">Los argumentos que se pasaron a cada funci\u00f3n.<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">Este nivel de detalle es oro puro para identificar r\u00e1pidamente la ra\u00edz de los problemas m\u00e1s complejos.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\">3. <strong>Perfilado del rendimiento<\/strong><\/h4>\n\n\n\n<p class=\"wp-block-paragraph\">\u00bfTu aplicaci\u00f3n est\u00e1 funcionando m\u00e1s lento de lo que deber\u00eda? Xdebug incluye un <strong>perfilador de rendimiento<\/strong> que analiza tu c\u00f3digo en busca de cuellos de botella. Genera archivos compatibles con herramientas como <strong>Webgrind<\/strong> o <strong>QCacheGrind<\/strong>, donde puedes visualizar cu\u00e1nto tiempo y recursos consumen diferentes funciones o partes de tu aplicaci\u00f3n.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\">4. <strong>Cobertura de c\u00f3digo (Code Coverage)<\/strong><\/h4>\n\n\n\n<p class=\"wp-block-paragraph\">Si haces pruebas unitarias, probablemente te interese saber qu\u00e9 partes de tu c\u00f3digo est\u00e1n siendo ejecutadas durante las pruebas. Xdebug genera informes de cobertura que te muestran qu\u00e9 l\u00edneas han sido probadas y cu\u00e1les no, ayud\u00e1ndote a mejorar la calidad de tus tests.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\">\u00bfC\u00f3mo empezar a usar Xdebug?<\/h4>\n\n\n\n<ol class=\"wp-block-list\">\n<li class=\"\"><strong>Instalaci\u00f3n<\/strong>: Puedes instalar Xdebug desde el repositorio oficial de tu sistema operativo o compil\u00e1ndolo manualmente.<\/li>\n\n\n\n<li class=\"\"><strong>Configuraci\u00f3n<\/strong>: En el archivo <code>php.ini<\/code>, habilita la extensi\u00f3n y configura par\u00e1metros clave como <code>xdebug.mode<\/code> para definir qu\u00e9 funciones quieres usar (<code>debug<\/code>, <code>profile<\/code>, <code>trace<\/code>, etc.).<\/li>\n\n\n\n<li class=\"\"><strong>Integraci\u00f3n<\/strong>: Configura tu IDE para conectar con Xdebug y empezar a depurar como un profesional.<\/li>\n<\/ol>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Xdebug<\/strong> es m\u00e1s que una herramienta; es un compa\u00f1ero que puede transformar tu experiencia de desarrollo en PHP. Al adoptar pr\u00e1cticas avanzadas como la depuraci\u00f3n en tiempo real y el an\u00e1lisis del rendimiento, no solo escribir\u00e1s mejor c\u00f3digo, sino que tambi\u00e9n ahorrar\u00e1s horas solucionando problemas.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">C\u00f3mo instalar Xdebug en Mac para depurar aplicaciones PHP<\/h3>\n\n\n\n<h4 class=\"wp-block-heading\">Requisitos previos: Homebrew<\/h4>\n\n\n\n<p class=\"wp-block-paragraph\">Antes de comenzar, aseg\u00farate de tener <strong>Homebrew<\/strong> instalado, ya que lo utilizaremos para gestionar las instalaciones. Si no lo tienes, inst\u00e1lalo ejecutando este comando en tu terminal:<\/p>\n\n\n\n<div class=\"cbc-code-wrapper\"><div class=\"cbc-code-bar\"><button class=\"cbc-copy-button\">Copy<\/button><\/div><pre class=\"wp-block-code\"><code class=\"\">\/bin\/bash -c \"$(curl -fsSL https:\/\/raw.githubusercontent.com\/Homebrew\/install\/HEAD\/install.sh)\"\n<\/code><\/pre><\/div>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\" \/>\n\n\n\n<h3 class=\"wp-block-heading\">Pasos para instalar Xdebug en Mac<\/h3>\n\n\n\n<ol class=\"wp-block-list\">\n<li class=\"\"><strong>Instalar PHP con Homebrew<\/strong><\/li>\n<\/ol>\n\n\n\n<p class=\"wp-block-paragraph\">Primero, instala PHP utilizando Homebrew. Este comando instalar\u00e1 la \u00faltima versi\u00f3n de PHP disponible:<\/p>\n\n\n\n<div class=\"cbc-code-wrapper\"><div class=\"cbc-code-bar\"><button class=\"cbc-copy-button\">Copy<\/button><\/div><pre class=\"wp-block-code\"><code class=\"\">brew install php\n<\/code><\/pre><\/div>\n\n\n\n<ol start=\"2\" class=\"wp-block-list\">\n<li class=\"\"><strong>Instalar Xdebug<\/strong><\/li>\n<\/ol>\n\n\n\n<p class=\"wp-block-paragraph\">Para instalar Xdebug en sistemas con procesadores M1 o posteriores, usa el siguiente comando:<\/p>\n\n\n\n<div class=\"cbc-code-wrapper\"><div class=\"cbc-code-bar\"><button class=\"cbc-copy-button\">Copy<\/button><\/div><pre class=\"wp-block-code\"><code class=\"\">arch -arm64 sudo pecl install xdebug\n<\/code><\/pre><\/div>\n\n\n\n<ol start=\"3\" class=\"wp-block-list\">\n<li class=\"\"><strong>Verificar la instalaci\u00f3n<\/strong><\/li>\n<\/ol>\n\n\n\n<p class=\"wp-block-paragraph\">Una vez completada la instalaci\u00f3n, verifica que PHP y Xdebug est\u00e9n correctamente instalados ejecutando:<\/p>\n\n\n\n<div class=\"cbc-code-wrapper\"><div class=\"cbc-code-bar\"><button class=\"cbc-copy-button\">Copy<\/button><\/div><pre class=\"wp-block-code\"><code class=\"\">php -v\n<\/code><\/pre><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">Deber\u00edas ver algo como esto en el resultado:<\/p>\n\n\n\n<div class=\"cbc-code-wrapper\"><div class=\"cbc-code-bar\"><button class=\"cbc-copy-button\">Copy<\/button><\/div><pre class=\"wp-block-code\"><code class=\"\">PHP 8.x.x (cli) (built: ...)\nZend Engine v4.x.x with Xdebug v3.x.x\n<\/code><\/pre><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">Esto confirma que Xdebug est\u00e1 activo.<\/p>\n\n\n\n<ol start=\"4\" class=\"wp-block-list\">\n<li class=\"\"><strong>Localizar el archivo <code>php.ini<\/code><\/strong><\/li>\n<\/ol>\n\n\n\n<p class=\"wp-block-paragraph\">Para encontrar el archivo de configuraci\u00f3n de PHP, ejecuta:<\/p>\n\n\n\n<div class=\"cbc-code-wrapper\"><div class=\"cbc-code-bar\"><button class=\"cbc-copy-button\">Copy<\/button><\/div><pre class=\"wp-block-code\"><code class=\"\">php --ini\n<\/code><\/pre><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">Esto te mostrar\u00e1 algo como:<\/p>\n\n\n\n<div class=\"cbc-code-wrapper\"><div class=\"cbc-code-bar\"><button class=\"cbc-copy-button\">Copy<\/button><\/div><pre class=\"wp-block-code\"><code class=\"\">Configuration File (php.ini) Path: \/opt\/homebrew\/etc\/php\/8.0\nLoaded Configuration File:         \/opt\/homebrew\/etc\/php\/8.0\/php.ini\nScan for additional .ini files in: \/opt\/homebrew\/etc\/php\/8.0\/conf.d\n<\/code><\/pre><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">El archivo que debes editar es el que aparece como <code>Loaded Configuration File<\/code>. En este caso:<br><code>\/opt\/homebrew\/etc\/php\/8.0\/php.ini<\/code>.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Configurar Xdebug<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Abre el archivo <code>php.ini<\/code> con tu editor de texto favorito. Por ejemplo:<\/p>\n\n\n\n<div class=\"cbc-code-wrapper\"><div class=\"cbc-code-bar\"><button class=\"cbc-copy-button\">Copy<\/button><\/div><pre class=\"wp-block-code\"><code class=\"\">nano \/opt\/homebrew\/etc\/php\/8.0\/php.ini\n<\/code><\/pre><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">Al final del archivo, a\u00f1ade las siguientes l\u00edneas:<\/p>\n\n\n\n<div class=\"cbc-code-wrapper\"><div class=\"cbc-code-bar\"><button class=\"cbc-copy-button\">Copy<\/button><\/div><pre class=\"wp-block-code\"><code class=\"\">zend_extension=\"xdebug.so\"\nxdebug.mode=debug\nxdebug.start_with_request=yes\n<\/code><\/pre><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">Guarda los cambios y cierra el archivo.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Configura tu editor<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Ahora, entre en configuraci\u00f3n en la configuraci\u00f3n principal settings.json:<\/p>\n\n\n\n<div class=\"cbc-code-wrapper\"><div class=\"cbc-code-bar\"><button class=\"cbc-copy-button\">Copy<\/button><\/div><pre class=\"wp-block-code\"><code class=\"\">\n\t\t\"launch\": {\n\t\t\t\"version\": \"0.2.0\",\n\t\t\t\"configurations\": [\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"Listen for Xdebug 3.x\",\n\t\t\t\t\t\"type\": \"php\",\n\t\t\t\t\t\"request\": \"launch\",\n\t\t\t\t\t\"port\": 9003,\n\t\t\t\t\t\"xdebugSettings\": {\n\t\t\t\t\t\t\"max_children\": 128,\n\t\t\t\t\t\t\"max_data\": 1024,\n\t\t\t\t\t\t\"max_depth\": 3,\n\t\t\t\t\t\t\"show_hidden\": 1\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t]\n\t\t},<\/code><\/pre><\/div>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\" \/>\n\n\n\n<h3 class=\"wp-block-heading\">\u00a1Listo para depurar!<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Reinicia tu servidor local si es necesario, y Xdebug estar\u00e1 configurado para depurar tus aplicaciones PHP. Con esta configuraci\u00f3n, podr\u00e1s integrar Xdebug con tu IDE favorito, como Visual Studio Code, y disfrutar de una depuraci\u00f3n avanzada con puntos de interrupci\u00f3n y an\u00e1lisis detallado del c\u00f3digo.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Si te encuentras con problemas, revisa la documentaci\u00f3n oficial o verifica que los pasos anteriores se hayan seguido correctamente. \u00a1Buena suerte depurando tu c\u00f3digo! \ud83d\ude80<\/p>\n","protected":false},"excerpt":{"rendered":"<p>\u00bfQu\u00e9 es Xdebug y para qu\u00e9 sirve? Si trabajas con PHP, seguramente te has enfrentado a errores complejos que parecen imposibles de resolver con simples var_dump() o echo. Aqu\u00ed es donde entra en juego Xdebug, una herramienta imprescindible para cualquier desarrollador PHP que quiera mejorar su flujo de trabajo y solucionar problemas de manera m\u00e1s [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":5677,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"iawp_total_views":17,"footnotes":""},"categories":[168],"tags":[],"class_list":["post-4077","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-desarrollo-web"],"_links":{"self":[{"href":"https:\/\/davidperezgar.com\/es\/wp-json\/wp\/v2\/posts\/4077","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/davidperezgar.com\/es\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/davidperezgar.com\/es\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/davidperezgar.com\/es\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/davidperezgar.com\/es\/wp-json\/wp\/v2\/comments?post=4077"}],"version-history":[{"count":1,"href":"https:\/\/davidperezgar.com\/es\/wp-json\/wp\/v2\/posts\/4077\/revisions"}],"predecessor-version":[{"id":5947,"href":"https:\/\/davidperezgar.com\/es\/wp-json\/wp\/v2\/posts\/4077\/revisions\/5947"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/davidperezgar.com\/es\/wp-json\/wp\/v2\/media\/5677"}],"wp:attachment":[{"href":"https:\/\/davidperezgar.com\/es\/wp-json\/wp\/v2\/media?parent=4077"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/davidperezgar.com\/es\/wp-json\/wp\/v2\/categories?post=4077"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/davidperezgar.com\/es\/wp-json\/wp\/v2\/tags?post=4077"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}