Skip to content

Usando XDebug

Bjverde edited this page Jun 16, 2021 · 16 revisions

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

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

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

Próxima etapa ?

4 - Informações técnicas

Clone this wiki locally