Depois que o XDebug for instalado, você precisa habilitá-lo no mecanismo PHP.
Para habilitar o XDebug:
Localize o arquivo php.ini usado pelo seu mecanismo PHP. Se você executar o phpinfo(), ele será mostrado na primeira tabela, no título Arquivo de configuração carregado.
Remova os comentários ou adicione as seguintes linhas ao php.ini carregado:
zend_extension_ts="<path to the php folder>/php_xdebug-2.0.2-5.2.5.dll"
xdebug.remote_enable=1
xdebug.remote_host=127.0.0.1
xdebug.remote_port=9000
xdebug.remote_handler=dbgp
Clique aqui para obter mais informações sobre como configurar o XDebug. Observação: certifique-se de que os caminhos especificados coincidam com o local dos arquivos correspondentes conforme determinado durante a instalação
Se você estiver usando um pacote XAMPP, precisará desabilitar o otimizador Zend porque ele bloqueia o XDebug. Localize as linhas relevantes e remova-as ou marque como comentários.
Observação: se você estiver usando o XAMPP Lite, precisará fazer as alterações acima em dois arquivos php.ini:
/xampplite/php/php.ini
/xampplite/apache/bin/php.in
Como a depuração do PHP com o XDebug funciona
Quando o XDebug está habilitado no arquivo php.ini, o XDebug pode pausar e reiniciar a execução do programa PHP a qualquer momento. Quando a execução do programa é pausada, o XDebug pode recuperar informações sobre o estado atual do programa, como ler os valores das variáveis do programa. Praticamente, isso significa o seguinte fluxo de trabalho:
O usuário define um ponto de interrupção na linha onde a execução do código-fonte do PHP deve ser pausada.
Quando essa linha é alcançada, o usuário executa o script uma linha após a outra pressionando os botões F7 e F8 e verifica os valores das variáveis.
As janelas do depurador
Quando você inicia uma sessão de depuração, um conjunto de janelas do depurador é aberto abaixo da janela principal do editor. Para adicionar uma nova janela, escolha Janela > Depuração. As seguintes janelas estão disponíveis:
Variáveis locais mostra uma lista de variáveis inicializadas, seus tipos e valores.
Inspeções mostra uma lista de expressões definidas pelo usuário com seus valores.
Pilha de chamadas mostra uma lista das funções chamadas na ordem inversa. A função chamada por último fica na parte superior da lista.
Pontos de interrupção mostra uma lista dos arquivos e números das linhas onde os pontos de interrupção estão definidos.
Sessões mostra uma lista das sessões de depuração ativas atualmente.
Segmentos
Fontes
Monitor HTTP no lado do cliente
Sessão de depuração
O seguinte procedimento é o fluxo de trabalho de uma típica sessão de depuração.
Para executar uma sessão de depuração:
Inicie o IDE, execute o projeto e abra o arquivo que contém o código-fonte que você deseja depurar.
Coloque o cursor na linha até a qual você deseja que o script do PHP seja executado automaticamente.
Para definir um ponto de interrupção, pressione Ctrl-F8 ou escolha Depurar > Alternar ponto de interrupção de linha.
Na janela Projetos, navegue para o nó do projeto atual, clique com o botão direito do mouse e escolha Depurar do menu pop-up. O IDE abrirá as janelas do Depurador e executará o projeto até que o ponto de interrupção seja atingido. Observação: se o projeto atual for definido como Principal, você poderá escolher Depurar > Depurar projeto principal ou pressionar Ctrl-F5, ou clicar no botão .
Alterne para a janela Variáveis locais. A janela mostra todas as variáveis que foram inicializadas na função atual, seus tipos e valores.
Para exibir o valor de uma variável fora da função, coloque o cursor em uma ocorrência da variável. A dica de ferramenta mostra o valor da variável.
Para executar o programa linha a linha, incluindo as linhas em todas as funções chamadas, pressione F7 ou escolha Depurar > Passar por dentro e observe as alterações nos valores das variáveis na janela Variáveis locais.
Para verificar a lógica do programa observando as alterações das expressões, defina uma nova inspeção:
Para abrir a janela Inspeções, escolha Janela > Depuração > ou pressione Ctrl-Shift-2. A janela Inspeções se abre.
Em qualquer lugar na janela Inspeções, clique com o botão direito do mouse e escolha Nova inspeção do menu pop-up. A janela Nova inspeção é aberta.
Insira a expressão da inspeção e clique em OK.
Agora você pode fazer uma verificação adicional durante a depuração.
Para cancelar a execução linha a linha do código em uma função e passar para a próxima linha depois da chamada da função, pressione Ctrl-F7 ou escolha Depurar > Passar por fora.
Para ignorar a execução linha a linha do código em uma função, obtenha o valor retornado pela função e passe para a próxima linha depois da chamada da função, pressione F8 ou escolha Depurar > Passar por cima.
Para pausar a sessão de depuração, escolha Depurar > Pausar.
Para continuar a sessão de depuração, escolha Depurar > Continuar ou pressione o botão .
Para cancelar a sessão de depuração, pressione o botão .
Quando o programa chegar ao fim, as janelas do depurador serão fechadas.
Sessão de depuração de exemplo
A seção ilustra uma sessão de depuração padrão.
Crie um novo projeto PHP com os seguintes parâmetros:
Tipo de projeto - Aplicativo PHP
Local dos códigos-fonte - o local padrão da pasta htdocs
Depois que a criação do projeto estiver concluída, posicione o cursor no nó Arquivos de código-fonte, escolha Propriedades do menu pop-up e abra a janela Depurar. Marque a caixa de verificação Depurar PHP no lado do servidor.
Para permitir o uso de teclas de acesso durante a sessão, posicione o cursor no nó do projeto e escolha Definir como projeto principal no menu pop-up.
No arquivo index.php, indique o seguinte código:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>NetBeans PHP debugging sample</title>
</head>
<body>
<?php
$m=5;
$n=10;
$sum_of_factorials = calculate_sum_of_factorials ($m, $n);
echo "The sum of factorials of the entered integers is " . $sum_of_factorials;
function calculate_sum_of_factorials ($argument1, $argument2) {
$factorial1 = calculate_factorial ($argument1);
$factorial2 = calculate_factorial ($argument2);
$result = calculate_sum ($factorial1, $factorial2);
return $result;
}
function calculate_factorial ($argument) {
$factorial_result = 1;
for ($i=1; $i<=$argument; $i++) {
$factorial_result = $factorial_result*$i;
}
return $factorial_result;
}
function calculate_sum ($argument1, $argument2) {
return $argument1 + $argument2;
}
?>
</body></html>
O código contém três funções:
A função calculate_factorial ()
A função calcualte_sum ()
A função calculate_sum_of_factorials () que chama a função calculate_factorial duas vezes, depois chama a função calcualte_sum () uma vez e retorna a soma calculada dos fatoriais.
Defina um ponto de interrupção (Ctrl-F8) no começo do bloco PHP:
<?php
Para iniciar a depuração, clique no botão . O depurador pára no ponto de interrupção.
Pressione F7 três vezes. O depurador pára na linha onde a função calculate_sum_of_factorials () é chamada. A janela Variáveis locais mostra as variáveis $m e $n com seus valores:
Para passar dentro da função calculate_sum_of_factorials(), pressione F7. O depurador começa a executar o código na função calculate_sum_of_factorials () e pára na chamada da função calculate_factorial().
A janela Variáveis locais agora mostra as variáveis locais $argument1 e $argument2 declaradas na função calculate_sum_of_factorials ().
Pressione F7. O depurador começa a executar o código com a função calculate_factorial(). A janela Pilha de chamadas mostra a pilha de chamadas para as funções na ordem inversa com a última função chamada na parte superior da lista:
Pressione F7 para passar pelo loop. Visualize os valores das variáveis na janela Variáveis locais.
Quando você se certificar de que o código está funcionando corretamente, pressione Ctrl-F7 para cancelar a execução da função. O programa retorna para a linha após a chamada da função calculate_factorial(). Observação: como alternativa, você pode pressionar F7 até que o programa conclua a execução da função calculate_factorial(). Você também retornará para a linha após essa chamada.
Como você acabou de verificar a função calculate_factorial() e sabe que ela está funcionando corretamente, pode pular sua execução ("passar por cima"). Para passar por cima, pressione F8. O programa pára na chamada da função calculate_sum().
Para passar dentro da função calculate_sum(), pressione F7.
Para passar por cima, pressione F8. Em qualquer caso, o depurador pára na última linha na função calculate_sum_of_factorials().
Pressione F7. O depurador move para a linha com a instrução echo.
Pressione F7 até que o depurador encerre o programa. A janela do navegador abre e mostra o resultado da execução do programa:
Usando inspeções adicionais
Você pode definir uma expressão de inspeção adicional para acompanhar a execução do programa. Isso pode ajudá-lo a pegar um erro.
Atualize o código da seguinte maneira (substitua um mais por um menos):
function calculate_sum ($argument1, $argument2) {
return $argument1 - argument2;
}
Imagine que isso tenha resultado de um erro de digitação, mas você na verdade precisa calcular a soma.
Escolha Depurar > Nova inspeção ou pressione Ctrl-shift-F6. A janela Nova inspeção é aberta.
Insira a seguinte expressão e clique em OK.
$factorial1+$factorial2
A nova expressão aparece na janela Inspeções.
Execute a sessão de depuração. Quando o depurador parar na linha
return $result;
compare o valor da expressão na janela Inspeções e o valor de $result na janela Variáveis locais. Eles devem ser iguais, mas estão diferentes.
Este exemplo é muito simples e deve dar uma noção geral do uso de inspeções.
Casos de PHP e HTML mistos
Você pode depurar código que contenha blocos de PHP e HTML. No exemplo da seção Sessão de depuração de exemplo, os valores são codificados. Expanda o código com um formulário de entrada de HTML para inserir valores.
Adicione o seguinte código HTML acima do bloco <?php ?>:
<form action="index.php" method="POST">
Enter the first integer, please: <input type="text" name="first_integer"/><br/> Enter the second integer, please: <input type="text" name="second_integer"/><br/> <input type="submit" name="enter" value="Enter"/> </form>
Substitua as seguintes linhas na parte superior do bloco <?php ?>:
$m=5;
$n=10;
$sum_of_factorials = calculate_sum_of_factorials ($m, $n);
echo "The sum of factorials of the entered integers is " . $sum_of_factorials;
pelo seguinte código:
if (array_key_exists ("first_integer", $_POST) && array_key_exists ("second_integer", $_POST)) {
$result = calculate_sum_of_factorials ($_POST["first_integer"], $_POST["second_integer"]); echo "Sum of factorials is " . $sum_of_factorials; }
Defina um ponto de interrupção no início do bloco <?php ?> e inicie a sessão de depuração.
Pressione F7. O depurador passa dentro do programa. A janela do navegador é aberta mas o formulário de entrada não é exibido. Este é o comportamento correto do depurador porque ele tem que passar através de todo o código-fonte de uma página da web antes que a página possa ser exibida. Praticamente, isso significa que o depurador passa através do código duas vezes. Na primeira vez, o depurador processa o código para exibir o formulário de entrada de HTML. Na segunda vez, o depurador executa o código PHP etapa por etapa.
Pressione F7 até que o depurador alcance o final do programa e o formulário de entrada seja aberto.
Preencha o formulário e clique em Enter. A sessão de depuração continua conforme descrito na seção Sessão de depuração de exemplo.
Para enviar comentários e sugestões, obter suporte e manter-se informado sobre os desenvolvimentos mais recentes dos recursos de desenvolvimento em PHP no NetBeans IDE, junte-se à lista de usuários .