Cómo usar xdebug para la solución de problemas de PHP avanzada


Puede solucionar problemas de su código PHP utilizando funciones de solución de problemas DUP, como ERROR_LOG, PRINT y VAR_DUMP, y sean honestos, ¡todos hicimos mucho! Aunque a veces son útiles, a menudo simplemente no son suficientes e incluso pueden retrasarte a medida que te desarrollas. Debe haber una mejor manera, ¿seguro? Ingrese xdebug, la maravillosa herramienta de pasos y el perfil PHP. En esta publicación, lo guiaré a través de mi viaje XDebug y le mostraré cómo usarlo para facilitar su vida. Puedes agradecerme más tarde (en comentarios)
¿Por qué es increíble Xdebug y cómo ha cambiado mi vida?
Xdebug está instalado
Cómo comenzar la resolución de problemas con xdebug
Solución avanzada
Alternativo xdebug
Admite xdebug
Si usted es el tipo de persona que prefiere aprender visualmente, Jonathan, nuestro educador de desarrolladores, ha hecho un video corto que detalla cómo usar Xdebug con PhpStorm.


A medida que cambiaba mi vida Xdebug hace unos años, no sabía que había sistemas de solución de problemas, nunca había oído hablar de Xdebug y estaba muy contento de usar una función que había reunido del desbordamiento de la pila en todos mis sitios. WordPress para Solución de problemas: if (! function ($ mensaje, true)); } else {ERROR_LOG ($ Mensaje); }}}} Era todo lo que pensaba que necesitaba hasta que alguien se reuniera con xdebug y mi vida ha cambiado. Disculpe la hipérbola, pero sucedió! Cuando soluciona problemas usando funciones como ERROR_LOG o VAR_DUMP, elimine solo las variables que define, que puede no ser lo que necesita. Por ejemplo, mientras gira un código, agregue la función en algún lugar para solucionar problemas de una variable. Actualice su página para que se ejecute la línea de solución de problemas, luego verifique el registro de errores para ver el resultado. Si esto no le da ninguna perspectiva sobre la causa del problema en cuestión, debe devolver y agregar más líneas de solución de problemas. Enjuague y repita. XDebug le permite detenerse durante la ejecución del código e inspeccionar todas las variables en el campo durante una solicitud. Esto significa que tiene todo lo que necesita para solucionar problemas durante una sola iteración de este ciclo. Ahorre una enorme cantidad de tiempo al observar problemas, y su trabajo de desarrollo es más efectivo.
Burgling ++ con xdebug xdebug incluso brilla cuando se trata de romper un problema cuya causa es completamente desconocida para usted. Si sabe que su función está interrumpida, las líneas de grabación interior son excelentes y funciona bien. Pero un comportamiento extraño que causa problemas podría provenir de cualquier lugar de un proyecto, como un complemento o un WordPress en sí. ¿Cómo diablos sigues esto? Usando los puntos de interrupción, puede interrumpir la ejecución del código en cualquier momento, lo que significa que lo mejor que puede hacer es detenerse antes y ver la ejecución del código con xdebug (más más tarde) hasta que note algo que se volvió tonto . Para ahorrar tiempo, puede mover progresivamente los puntos de interrupción a la ejecución hasta que aborde el problema potencial, en lugar de romper el código ya analizado como la causa del problema. Cuando encuentre el problema, puede cambiar los valores de las variables después de que se asignen, por lo que puede probar los remedios potenciales durante la preparación, todo durante la misma solicitud. Desarrollo basado en la solución de problemas Otro uso excelente de XDebug es su uso. Proactivo durante el desarrollo, en lugar de reaccionar a los problemas de código existentes. Piense en esto como un desarrollo realizado (TDD), pero primero use las escasas en lugar de escribir pruebas. Ni siquiera estoy seguro de si el desarrollo impulsado por depuración (DDD) es un término ampliamente utilizado, pero para mí, usé XDebug para ayudarme a escribir un nuevo código de algunas maneras:
Inspeccione las matrices, los objetos y los tribunales de clase existentes para encontrar los datos disponibles para mí en el código para que pueda usarlos en el nuevo código que escriba inmediatamente un código recién escrito para probar que funciona como se esperaba como se esperaba.
Esto no es algo que hago todo el tiempo, pero Xdebug me da esta perspectiva cuando lo necesito.
Instalación de xdebug, esperamos que los beneficios que hemos detallado le hagan querer usar XDebug y estar preparado para algunos pasos. Hicimos una lista de los medios locales más comunes con algunos enlaces útiles para instalar XDebug en ellos:
Mampa
Mamp Pro
XAMPP
VPP
familiar
Ayudante de cámara
Servidor de escritorio
LocalWP
Devkinsta
peón
Lando
Caja de demonio
Matt Stauffer recientemente compiló una lista de configuraciones populares disponibles, por lo que si me lo perdí, debe encontrar algo para su entorno local. ¿Trabaja en un entorno local diferente y necesita orientación? Dinos en los comentarios.
XDEBUG Versión 3 En noviembre de 2020, se lanzó XDEBUG 3. Además de las mejoras de rendimiento masivas y el soporte de PHP 8, el cambio más significativo fue cómo activa la funcionalidad XDEBUG a través de la nueva configuración de modo. Además de facilitar la activación de diferentes tipos de modos de solución de problemas, también cambia la forma en que configura primero XDebug en Php.ini. El tutorial en línea que sigue para instalar y configurar XDebug para su entorno de desarrollo local determinará qué configuraciones necesita configurar. Afortunadamente, hay un documento de ayuda xdebug en la actualización de la versión 2 a la versión 3 para guiarlo.
Como un ejemplo rápido, si tiene la versión de 2 instalados, es posible que se le solicite configurar la configuración php.ini para que se vea así: [xdebug] zend_exteension = “/patch/to/xdebug/extension/xdebug.soSo “xdebug.remote_enable = 1 xdebug.remote_host = 127.0.0.1 xdebug.remote_port =” 9000 “mientras, si tiene la 3ra versión, debe configurarlo de la siguiente manera: xdebug.mode = debug xdebug.client_host = 127.0.0.1 xdebug. Client_port = “9003” En la versión 3, también puede activar diferentes modos xdebug, especificándolos en una lista separada por una coma.xdebug.moda = desarrollo, traza para este artículo, uso xdebug 3, con modo establecido en la depuración, Pero cubriremos cualquier diferencia para la versión 2. PhpStorm Integration Flash News: ¡Me gusta PhpStorm! ¿Y adivina qué? PhpStorm tiene una integración extraordinaria con XDebug, y sus documentos de ayuda incluyen una guía de configuración completa. Si no usa PhPStorm, la mayoría de los otros entornos de desarrollo integrados (IDE), como el código Visual Studio y los editores, como el texto sublime, se pueden configurar para usar XDebug. Comience a solucionar problemas después de instalar XDebug y configurado PhpStorm, puede comenzar a solucionar problemas de su código interactivo. Esto se hace estableciendo los puntos de interrupción a ciertas líneas de su código y diciéndole a PhpStorm que escuche las conexiones recibidas. Cuando PHP realiza una línea que tiene un punto de interrupción, Xdebug intervendrá e interrumpirá la ejecución, lo que le permite lograr una perspectiva valiosa sobre todo lo que sucede durante la ejecución:
La barra lateral del panel de solución de problemas tiene varios botones para controlar el código. Aquí estoy de arriba a abajo, ya que aparecen en la captura de pantalla: Reanudar el programa – Continuar con la ejecución de PHP
Pausa del programa: no está disponible durante la resolución de problemas
Parar – detener la ejecución
Ver los puntos de interrupción: abra una ventana con todos los puntos de interrupción establecidos en todos los archivos del proyecto

Puntos de interrupción de mudo: deshabilite los departamentos durante la ejecución (bueno, para completar su solicitud sin interrumpir)
Configuración: ajuste la pantalla del defantador
Pestaña PIN: siempre muestre el panel de solución de problemas
Cerca del depurador, la consola y las pestañas de salida, la barra superior controla la forma en que la solución de problemas cruza el código, por lo que puede inspeccionar diferentes partes de la base del código:
PUNTA PANTALLA: sal de regreso al lugar donde se interrumpe el programa
Pase: ejecute y muévase a la siguiente línea de archivo
Ingrese: si la siguiente línea tiene una o más funciones, mueva la mierda a aquellos para viajar
Force Step Into-Ingrese una función que se marca como se ignora
Salir al debanitador de la función actual a la función que la llamó

Ejecutar al cursor: ejecute a la línea en la que se encuentra el cursor
Evalúe la expresión: ejecute PHP mientras se ejecuta el solucionador de problemas (piense en ello como la consola JS A Chrome)
Muestre las constantes definidas por el usuario: cambie la visualización de cualquier constante PHP definida por su código
Mostrar la dirección de valores: cambie la visualización de la dirección de memoria de los objetos
Pantallas de superglobals vacíos: cambia la visualización de cualquier superglobals vacío
Agregue un método a la lista de omisión: marque el método que se ignorará la próxima vez que varios de estos botones también tienen accesos directos del teclado, pero los más utilizados son:
F9 – Programa de reanudación
F8 – Pase
F7 – Entra en
Los puntos de interrupción se agregan haciendo clic en la canaleta a la izquierda del código, a lo largo de la línea que desea romper. PhpStorm también le permite establecer puntos de interrupción condicionados, donde agrega la lógica de PHP para controlar cuando realmente se desencadena:
Cuando gira, a menudo es útil inspeccionar y rastrear el valor de una variable a lo largo de una solicitud para ver cuándo cambia. PhpStorm le permite agregar variables a una lista que sigue y se muestra en un panel “relojes” separado, separado de todos los datos en el panel “variable” principal. Puede seguir una variable, ya sea haciendo clic en la variable en el archivo durante la solución de problemas y seleccionando Agregar a los relojes, o haciendo lo mismo desde la variable en el panel “Variable”:
Sin embargo, los relojes no se limitan a variables. Incluso puede agregar expresiones o características a su lista de seguimiento. Esto es extremadamente útil cuando se trabaja con un CMS como WordPress, que utiliza muchas funciones de ayuda como Site_url () o get_post (). Al agregar la llamada completa a la lista de seguimiento y siempre podrá ver cuál será el resultado de esa función. Pila Trace en la versión 2 de XDebug, la activación de XDebug permite seguir la pila extendida para cualquier error, notificaciones o advertencias escritas en el registro de PHP. Con el lanzamiento de la versión 3, se ha cambiado para que se active explícitamente configurando el modo XDEBUG para desarrollar. Debido a que confío en WP-Content/Debug.log o Php Error_log para advertirme sobre problemas, pero uso phpstorm para ver el seguimiento de la pila, no activo la pila extendida (y muy ruidosa). Cuando utilicé la versión 2 de xdebug, deshabilité el seguimiento de la pila en el diario poniendo esto en mi wp-config.php: if (function_exist (‘xdebug_disable’)) {xdebug_disable ();
} Uso avanzado ¿Dominas los conceptos básicos? ¿Estás listo para más? Aquí hay algunas formas avanzadas en las que puede usar xdebug para mejorar sus flujos de desarrollo. Perfil Cuando realmente tiene que investigar los problemas de rendimiento con su código o sitio, una de las mejores herramientas que hemos encontrado es Blackfire, que he escrito antes. Pero también los perfiles XDebug para usted y PhpStorm pueden interpretar los resultados, lo cual es excelente porque significa que nunca debe dejar PhpStorm. 😂 Para activar el Profiler, edite el archivo php.ini para agregar o decorar estas líneas en la sección XDEBUG: Versión 3 xdebug.mode = Perfiles xdebug.output_dir = “/parche/to/deseado/perfiler/output/director” Versión 2 xdebug.profiler_enable = 1 xdebug.profiler_output_dir = “/parche/to/desired/profiler/output/director” Entonces xdebug creará un archivo de perfil en output_dir o perfiler_output_dir que especifica para cada ejecución de su código. ¡Recuerde apagar el perfilador cuando haya terminado para que no llene su disco duro con archivos de registro! Alternativamente, establezca el director de salida en el director /TMP para el sistema operativo. Estas revistas se pueden analizar en PhpStorm mediante herramientas de navegación> Análisis instantáneo XDebug Profiler y seleccionando el archivo de registro. La vista no es tan en profundidad como Blackfire o usando algo como Kcachegrind, pero sigue siendo una excelente manera de analizar los bloqueos en su código:
La resolución remota de problemas de SSH solo puede solucionar los errores si puede recrearlos en su entorno de desarrollo.Por supuesto, cuando se trata de ejecutar un sitio web, le recomendamos que tenga el entorno de desarrollo lo más cerca posible de la producción y resuelve una copia de la base de datos de producción.Sin embargo, a veces, los errores y la rareza solo ocurrirán en la producción.Nadie quiere comenzar a confundirse en un sitio en vivo, editando archivos para agregar líneas de registro.¡No se preocupe, Phpstorm y Xdebug lo cubrieron!
Puede instalar XDebug en un servidor remoto y puede solucionar el código local con XDebug y PhpStorm. Esta función es un rescate y no requiere mucho para configurar. Asegúrese de deshabilitar xdebug cuando haya terminado para que el rendimiento de su sitio no se vea afectado por Xdebug innecesariamente. ¿Es Xdebug la única forma de solucionar problemas de PHP para WordPress? La respuesta corta es “no”, la respuesta larga es “dependiendo”. Si bien XDebug es la forma recomendada de activar la resolución de problemas de PHP, es posible que desee considerar otras opciones. Uno que recientemente pasó a mi manera es Ray, desde el espacio. Ray es una aplicación paga que se ejecuta en Mac, Windows o Linux y se conecta a su proyecto PHP. Esto se hace a través de un paquete compositor o por un complemento de WordPress, si gira para WordPress. Una vez que haya configurado todo, puede usar la llamada de función Ray (), que es muy similar al método console.log () en JavaScript, para enviar cualquier datos arbitrarios a la aplicación Ray. Puede enviarles filas simples y variables (incluidas matrices y objetos) e incluso más combinaciones de datos. Ray (‘Hola mundo’); ray (‘mi variable’, $ variable); Ray (‘Array’, $ Array, ‘Object’, $ Object);
Ray envía estos datos a la aplicación de Ray utilizando un proceso similar al que puede hacer al hacer una solicitud de curl para una API HTTP JSON. Hay algunas ventajas en el uso de rayos en comparación con xdebug. Debido a que Ray enviará datos de su código a la aplicación Ray solo cuando la aplicación se esté ejecutando, no tendrá tanto efecto en el rendimiento de su sistema como XDEBUG. XDebug 3 es una mejora significativa en el rendimiento a XDebug 2 y puede desactivar la resolución de problemas por extensión del navegador cuando sea necesario. Sin embargo, todavía está instalado y activo en su entorno PHP local, por lo que realmente puede deshabilitarlo desactivando en Php.ini. Ray también le permite hacer cosas más avanzadas, como la capacidad de interrumpir la ejecución del código, la resolución de problemas remotas a través de SSH y la capacidad de capturar cualquier consulta que se ejecute durante una solicitud de PHP. Xdebug hace algo más y es gratis, pero Ray es algo a considerar como una opción para la resolución de problemas, especialmente si aún confía en el alta durante el desarrollo. Soporte Xdebug La persona detrás de Xdebug es Derick Rethans. Es el único desarrollador de Xdebug y se basa en patrocinadores para financiar su actividad continua en el mantenimiento y las actualizaciones de XDebug. Aquí, en los deliciosos cerebros, somos seguidores de Patreon en febrero de 2019. Si usted o su empresa encuentran útil Xdebug, ¿por qué no patrocinarlo a través de Patreon o Github?


Copyright statement: Unless otherwise noted, this article is Collected from the Internet, please keep the source of the article when reprinting.

Check Also

gkOVSBm5B8SgiXmo

Shopify vs WooCommerce – ¿Cuál es la mejor plataforma?(Comparación)

Shopify vs WooCommerce

Leave a Reply

Your email address will not be published. Required fields are marked *