Xdebug instalação e configuração no linux 🐧
Tags: linux, php, beginners, braziliandevs
Published: 2023-09-04 00:46:48

_Xdebug é uma extensão para PHP e fornece uma variedade de recursos para melhorar a experiência de desenvolvimento de PHP._

---

**Step Debugging**

- Uma maneira de percorrer seu código em seu IDE ou editor enquanto o script está em execução.

![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/sgt60589eayy7ezw9h3a.jpg)

**Improvements to PHP's error reporting**

- Uma função var_dump() aprimorada, rastreamentos de pilha para Avisos, Avisos, Erros e Exceções para destacar o caminho do código para o erro

![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/oizo6k0mjuysmt78zqm0.png)

![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/t4qtgeh7u37clzbj8jls.png)

**Tracing**

- Grava todas as chamadas de função, com argumentos e local de invocação no disco. Opcionalmente, também inclui todas as atribuições de variáveis e valores de retorno para cada função.

```php
<?php
$str = "Xdebug";
function ret_ord( $c )
{
    return ord( $c );
}

foreach ( str_split( $str ) as $char )
{
    echo $char, ": ", ret_ord( $char ), "\n";
}
?>
```

```
TRACE START [2007-05-06 14:37:16]
    0.0003     114112   -> {main}() ../trace.php:0
    0.0004     114272     -> str_split('Xdebug') ../trace.php:8
    0.0007     117424     -> ret_ord($c = 'X') ../trace.php:10
    0.0007     117584       -> ord('X') ../trace.php:5
    0.0009     117584     -> ret_ord($c = 'd') ../trace.php:10
    0.0009     117584       -> ord('d') ../trace.php:5
    0.0010     117584     -> ret_ord($c = 'e') ../trace.php:10
    0.0011     117584       -> ord('e') ../trace.php:5
    0.0012     117584     -> ret_ord($c = 'b') ../trace.php:10
    0.0013     117584       -> ord('b') ../trace.php:5
    0.0014     117584     -> ret_ord($c = 'u') ../trace.php:10
    0.0014     117584       -> ord('u') ../trace.php:5
    0.0016     117584     -> ret_ord($c = 'g') ../trace.php:10
    0.0016     117584       -> ord('g') ../trace.php:5
    0.0019      41152
TRACE END   [2007-05-06 14:37:16]
```

**Profiling**

- Permite, com a ajuda de ferramentas de visualização, analisar o desempenho da sua aplicação PHP e encontrar gargalos.

![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/ihsmg8vp3p4fkc8sv9vf.png)

**Code Coverage Analysis**

- Para mostrar quais partes da sua base de código são executadas ao executar testes de unidade com PHPUnit.

![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/y1hw65ngcpo0h18wcnwu.png)

---

# Instalando

Instalar o Xdebug com um gerenciador de pacotes costuma ser o caminho mais rápido. Dependendo da sua distribuição, execute o seguinte comando:

**Ubuntu** (18.04 LTS/Bionic, 20.04 LTS/Focal):

```bash
sudo apt-get install php-xdebug
```

**Ubuntu** ([Ondřej Surý's PPA](https://launchpad.net/~ondrej/+archive/ubuntu/php/+sourcepub/13437320/+listing-archive-extra)):

```bash
sudo apt-get install php(versão)-xdebug
```
Para outras distribuições linux [aqui](https://xdebug.org/docs/install#linux).

# Instalando com PECL
Você pode instalar o Xdebug através do PECL no Linux com [Homebrew](https://formulae.brew.sh/formula/php).

Pré-requisitos:

- GCC e bibliotecas associadas.
- Cabeçalhos de desenvolvimento PHP.

Run:

```bash
pecl install xdebug
```

---

# Configurando

Primeiro temos que encontrar o arquivo de configuração dos xdebug, no linux ele se encontra no seguinte caminho:

```
cd /etc/php/sua versão do php/mods-available
```
Dentro desse diretório encontra-se **xdebug.ini** o arquivo de configuração do xdebug e abra o arquivo com algum editor de código.

```
sudo seu editor xdebug.ini
```
Coloque as seguintes configurações:

```
zend_extension=xdebug.so
xdebug.mode=debug,develop
xdebug.start_with_request=yes
xdebug.client_port=9003
xdebug.client_host=127.0.0.1
xdebug.cli_color=1
xdebug.show_local_vars=1
```

Vamos vereficar se o xdebug foi instalado e está funcionando para isso use o seguinte código php:

```php
<?php

phpinfo();
```
Nas informações do php você deve encontrar uma seção do xdebug.

![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/copzumt8921cnsytk7u4.png) 

---

# Resolvendo um problema

Na imagem acima, mostra que o nosso xdebug está com os modos **Development Helpers** e **Step Debugger** ativos, mas se em um determinado projeto quisermos ativar ou desativar algum modo sem mexer no arquivo principal do xdebug.

Para que isso, seja possível vamos usar a variável de ambiente **XDEBUG_MODE**, como no exemplo abaixo:

```
XDEBUG_MODE=coverage php -S 127.0.0.1:8000
```
Se checamos novamente na seção xdebug teremos apenas o modo **coverage** abilitado

![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/mgsyfaotj4dq5733lp8t.png)

[Aqui](https://xdebug.org/docs/all_settings#mode) encontra-se as instruções dos outros modos e de todas as configurações possiveis do xdebug.

Assim termina o nosso guia de instalação e configuração do xdebug no linux.