Usando XDebug - bjverde/formDin GitHub Wiki
Xdebug é uma aprimorada extensão para a linguagem PHP que fornece funcionalidades de debug, profiling e trace. Atualmente desenvolver em PHP sem utilizar o Xdebug é quase querer ser amador[1].
Uma das ferramentas mais úteis no desenvolvimento de software é um depurador apropriado. Ele permite que você trace a execução do seu código e monitore os itens na pilha de execução. XDebug, um depurador de PHP, pode ser utilizado por várias IDEs para prover breakpoints e inspecionar a pilha. Ele também lhe permite que ferramentas como PHPUnit e KCacheGrind realizem análise de cobertura e perfis de código. [2]
Objetivo do Debug ou depurar
Analisar para identificar qual parte da aplicação está causando o defeito detectado, para que seja possível realizar sua correção.[3]
Objetivo do Profiling
Esta é uma maneira de visualizar quais partes do código fonte estão demorando mais para executar. O Xdebug precisa ser configurado para poder gerar estas estatísticas.[2]
Objetivo do Trace
Trace significa acompanhar o fluxo da aplicação.
Instalação
- Para quem usa Linux ou Docker veja Instalado e Configurando o Ambiente de Desenvolvimento > Ambiente Linux ou Docker
- Para quem usar Windows veja Instalado e Configurando o Ambiente de Desenvolvimento > Ambiente Linux ou Docker
Configurando
Com PHP 7.2 ou superior é recomendavel usar o XDebug 3.X, A versão 2.X funciona apenas até a versão 7.4
Configurar XDebug 3.X para habilitar o Debug
Edite o arquivo php.ini
, procure a seção Xdebug e deixe como no exemplo abaixo.
Observação: na link zend_extension pode variar em função do SO e instalação.
[xdebug]
zend_extension="d:/wamp64/bin/php/php7.4.9/zend_ext/php_xdebug-3.0.4-7.4-vc15-x86_64.dll"
xdebug.profiler_output_name = cachegrind.out.%t.%p
xdebug.show_local_vars=0
xdebug.output_dir="d:/wamp64/tmp"
;3 modos: desenvolvimento, cobertura de codigo, debug
xdebug.mode = develop,coverage,debug
;inicia com request
xdebug.start_with_request = yes
- https://dev.to/getjv/xdebug-3-docker-laravel-vscode-52bi
- https://blog.levacic.net/2020/12/19/xdebug-3-docker-vs-code-setup-guide-on-ubuntu/
- https://vladiiancu.com/post/configure-xdebug-3-and-vscode-with-docker/
Configurar XDebug 2.X para habilitar o Debug
Edite o arquivo php.ini
, procure a seção Xdebug e deixe como no exemplo abaixo.
Observação: na link zend_extension pode variar em função do SO e instalação.
[xdebug]
zend_extension="D:/wamp/bin/php/php7.2.10/zend_ext/php_xdebug-2.6.1-7.2-vc15.dll"
;Só as duas linhas abaixo são o suficiente para Eclipse e VsCode
xdebug.remote_enable = on
xdebug.remote_autostart = on
;Restringindo o acesso
; xdebug.remote_host="localhost"
; xdebug.remote_port=9000
; xdebug.remote_handler="dbgp"
;Informações de Profile
xdebug.profiler_enable = off
xdebug.profiler_enable_trigger = Off
xdebug.profiler_output_name = cachegrind.out.%t.%p
xdebug.profiler_output_dir ="D:/wamp/tmp"
xdebug.show_local_vars=0
Depois é preciso configurar sua IDE ou editor de código.
Dicas
Mostrar o var_dump() completo
https://stackoverflow.com/questions/9998490/how-to-get-xdebug-var-dump-to-show-full-object-array
antes de apenas um var_dump()
ini_set("xdebug.var_display_max_children", -1);
ini_set("xdebug.var_display_max_data", -1);
ini_set("xdebug.var_display_max_depth", -1);
alteração definitiva
Editar o arquivo php.ini
; with sane limits
xdebug.var_display_max_depth = 10
xdebug.var_display_max_children = 256
xdebug.var_display_max_data = 1024
; with no limits
; (maximum nesting is 1023)
xdebug.var_display_max_depth = -1
xdebug.var_display_max_children = -1
xdebug.var_display_max_data = -1
Links de referencia
- [1] Instalando e configurando o Xdebug no Wamp Server - https://www.devmedia.com.br/instalando-e-configurando-o-xdebug-no-wamp-server/28378
- [2] PHP Do Jeito Certo, Xdebug - http://br.phptherightway.com/#xdebug
- [3] http://www.diogomatheus.com.br/blog/php/depuracao-de-aplicacoes-php-com-xdebug/