Depuração com o PhpStorm

Crie uma base sólida para se aprofundar no mundo sutil da depuração no PhpStorm. Neste episódio, você aprenderá como iniciar uma sessão de depuração, definir pontos de interrupção e usar as opções Step over e Step into para explorar seu código com o Xdebug.

Transcrição

Um dos recursos mais avançados do PhpStorm é o depurador. O nome "debugger" ("depurador", em português) remonta à década de 1940 e significa literalmente "algo que remove bugs ou falhas de um programa". Um depurador permite pausar o código durante a execução, o que possibilita inspecionar a memória do programa, acompanhar o caminho percorrido pelo código e muito mais. O objetivo de um depurador é facilitar a descoberta de erros e a remoção de bugs do seu código.

O PhpStorm vem com um depurador leve incorporado, mas, de longe, o depurador mais popular para PHP é o Xdebug, que você precisará instalar separadamente. Porém, felizmente, o PhpStorm fará a instalação para você. Então, vejamos como configurar o Xdebug com o PhpStorm e como começar a depurar.

Digamos que você não tenha o Xdebug instalado. O que acontece quando você começa a depurar um script PHP, por exemplo, um teste? Em vez de executar o teste normalmente, você pode pressionar o botão Debug. Como você pode ver, o PhpStorm nos avisa que não há um depurador instalado, mas que ele também sabe resolver esse problema para você. Basta pressionar Update Interpreter Info e, em seguida, Download and install Xdebug extension e aguardar um momento para que o IDE configure o Xdebug para você.

Quando terminar, o PhpStorm reexecutará automaticamente seu teste com o depurador habilitado, mas não acontecerá muita coisa. Isso porque ainda não mandamos o depurador pausar em lugar algum. Para isso, precisaremos usar algo chamado “pontos de interrupção" (breakpoints).

Um ponto de interrupção é um local no código onde o depurador interrompe a execução por um segundo, permitindo que você inspecione o que está acontecendo.

Por exemplo, vamos adicionar um ponto de interrupção nesta linha aqui. Basta clicar no número da linha na medianiz. Agora, vamos executar novamente nosso teste.

Desta vez, você perceberá que algumas coisas mudaram. O programa está pausado, e o PhpStorm está mostrando várias informações.

À esquerda, você vê tudo o que aconteceu antes de chegarmos a esse ponto de interrupção. Chegamos até aqui por meio dessas chamadas de método. Você pode clicar nelas, e o PhpStorm mostrará o caminho através dos arquivos.

À direita, você vê todas as variáveis disponíveis no momento no ponto de interrupção. Há uma variável $this que faz referência à classe de teste. Você pode abri-la e ver o que ela contém. Depois, há outras variáveis, como a variável global $_ENV. O PhpStorm mostrará seu conteúdo, e você poderá ver como a lista de variáveis muda sempre que passamos para uma das chamadas de método anteriores.

O depurador agora está retrocedendo no fluxo do programa, o que pode ser muito útil se você precisa saber o que aconteceu antes. Mas e quanto a avançar?

Você pode cancelar a pausa do depurador pressionando o botão Resume, mas o teste será simplesmente concluído.

Então, vamos voltar ao nosso ponto de interrupção e, em vez de pressionar Resume, pressionaremos os botões Step over ou Step into. E esses dois comandos são muito poderosos.

"Step over" significa que o depurador passará para a próxima instrução e fará uma nova pausa. "Step into" significa que o depurador descerá a um nível mais abaixo e depurará o que está acontecendo em uma chamada de função.

Esses dois botões juntos são superpoderosos. Basicamente, você pode navegar pelo fluxo do seu programa com eles, observando como as variáveis mudam, por que as condições coincidem ou não, quantas vezes algo é repetido em loop e muito mais.

Mas a depuração não é apenas poderosa; ela também pode ser intimidadora. Há muita coisa acontecendo, e é difícil dar exemplos sem contexto que façam sentido. Também é algo que requer prática para se sentir confortável, assim como tocar um instrumento, por exemplo.

Então, vamos fazer o seguinte. Mostrei a você os conceitos básicos para começar a usar o depurador: como iniciar uma sessão de depuração, pontos de interrupção e como usar o Step over e o Step into. Você precisará se sentir à vontade com esses recursos e a única maneira de conseguir isso é praticando. Na próxima vez que escrever uma instrução var_dump ou dd, tente usar o depurador. Haverá um certo atrito na primeira vez que você fizer isso, mas ficará mais fácil com o tempo e valerá a pena a longo prazo.