Depuração de código PHP \| TreinaWeb               Promoção no ar   Matricule-se agora e garanta **54% de desconto**  

  Termina em   Tempo restante da oferta: 22 Horas 

 19 Min 

 04 Seg 

   Tempo restante da oferta: 22 19 04 

  [Assinar →](https://www.treinaweb.com.br/checkout/pagamento/plano/anual?cupom=TW-SCLIENTE26) 

   [                ](https://www.treinaweb.com.br)  Explorar  

 [ Quanto custa? ](#assinatura) [ FAQ ](https://www.treinaweb.com.br#faq) [Matricule-se](#assinatura) [ Entrar ](https://www.treinaweb.com.br/login) 

     [ Início ](https://www.treinaweb.com.br) [ Artigos ](https://www.treinaweb.com.br/blog) Depuração de código PHP  [ PHP ](https://www.treinaweb.com.br/blog/categoria/php) 

# Depuração de código PHP

 Como fazer a depuração de código PHP? Essa é uma dúvida recorrente do pessoal que está vindo de outras linguagens ou que está começando a escrever projetos um pouco mais complexos.

 [ Elton Fonseca ](https://www.treinaweb.com.br/blog/autor/elton-fonseca) 10 anos atrás

  ![](https://dkrn4sk0rn31v.cloudfront.net/uploads/2021/05/depura--o.png)  

Como fazer a depuração de código [PHP](https://www.treinaweb.com.br/blog/o-que-e-php/ "PHP")? Essa é uma dúvida recorrente do pessoal que está vindo de outras linguagens ou que está começando a escrever projetos um pouco mais complexos.

Não vamos aqui utilizar IDE’s e criar breakpoints etc, mas você verá que isso é possível. A ideia é passar uma abordagem geral do que é e qual o suporte disso no PHP.

[  ![UX/UI - Testando interfaces com avaliação heurística](https://d2knvm16wkt3ia.cloudfront.net/assets/svg-icon/ux-ui.svg)   Curso UX/UI - Testando interfaces com avaliação heurística Conhecer o curso ](https://www.treinaweb.com.br/curso/ux-ui-testando-interfaces-com-avaliacao-heuristica)

### O que é depuração?

Depuração, *debug* ou *debugging*, é o processo onde o desenvolvedor utiliza ferramentas para encontrar um problema no código do software, a ideia é encontrá-los antes mesmo que eles cheguem ao conhecimento do usuário final.

### Um pouco do histórico

Você deve estar pensando: OK, eu já sei o que é debug, mas o que tem de diferente em **degubar código PHP** em relação a outras linguagens? Antes de chegar nesse ponto, vamos a mais um pouco mais de “história”.

Os programadores que abriram caminho para nossa turma usavam (e ainda usam) linguagens de baixo nível para desenvolver. Nessas linguagens eles precisavam verificar, além do código, elementos como alocação de memória e instruções que tocavam diretamente o hardware. Com isso, depurar um código era extremamente difícil, trabalhoso e envolvia ferramentas complexas.

Com o tempo as linguagens ficaram mais simples de trabalhar, as IDE’s foram se desenvolvendo e a depuração passou a ser algo mais simples de se usar. Em linguagens como Java e Delphi as ferramentas de debug são praticamente parte das IDE’s utilizadas para se desenvolver nessas linguagens, sendo que o programador não precisa configurar basicamente nada para utilizar recursos como: breakpoint, monitoramento de valores de variáveis, pilha de execução, execução linha a linha e outros recursos.

Com a popularização da web outras linguagens de programação foram surgindo, entre elas, muitas linguagens que são interpretadas (como é o caso do PHP, em essência), ao invés de compiladas. Inicialmente essas linguagens não possuíam muitas ferramentas, além disso a maioria delas não possui uma IDE específica, podendo ser utilizadas em um editor de código simples. Nesses ambientes, os desenvolvedores se acostumaram a usar comandos da própria linguagem para saber o valor de uma variável ou valores das propriedades de um objeto, além da necessidade de saber se um método foi executado, se está retornando o valor esperado, entre outras coisas.

No caso do PHP, ele possui uma poderosa ferramenta de debug chamada **Xdebug** que pode ser usada em conjunto com diversas IDEs, inclusive você pode aprender aqui no blog [como instalar e configurar o Xdebug](https://www.treinaweb.com.br/blog/como-instalar-o-php-e-xdebug-no-windows/ "como instalar e configurar o Xdebug"). Essa ferramenta provê recursos para utilizar a maioria dos elementos que falamos anteriormente (breakpoint, histórico de execução, alocação de memória e outros), porém, eles não são utilizados pela maioria dos desenvolvedores. Geralmente o *Xdebug* é instalado para melhorar a saída de erros, colorir a saída do `var_dump` ou para outros recursos como, por exemplo, para [gerar relatórios de cobertura de teste no PHP](https://www.treinaweb.com.br/blog/relatorio-de-cobertura-de-testes-code-coverage-com-o-phpunit/ "gerar relatórios de cobertura de teste no PHP").

Vamos ver algumas funções do próprio PHP para ajudar no processo de *debug*:

[  ![Desenvolvedor PHP Júnior](https://d2knvm16wkt3ia.cloudfront.net/assets/svg-icon/php.svg)   Formação Desenvolvedor PHP Júnior Conhecer a formação ](https://www.treinaweb.com.br/formacao/desenvolvedor-php-junior)

### Backtrace

O PHP possui duas funções que retornam o histórico de chamada de funções, inclusão de arquivos e execução de código com `eval()`. A primeira função, `debug_backtrace()` retorna essas informações para um array e a segunda ` debug_print_backtrace()` imprime diretamente na tela o histórico. Veja um exemplo:

**Arquivo index.php**

```php
