Depuração de Scripts PHP com NetBeans IDE
Como você já sabe, quando alguém escreve um código em uma linguagem de alto nível, existem dois tipos de erros que ele ou ela pode tornar—erros de sintaxe e erros de lógica. O NetBeans IDE fornece todas as ferramentas necessárias para ajudá-lo a depurar seus scripts e encontrar os erros.
Depuração de erros de sintaxe
Felizmente, o NetBeans IDE detecta erros de sintaxe enquanto você está digitando, e sublinha-los com uma linha vermelha ondulada, como mostrado na Figura 1.
Figura 1 No NetBeans IDE, erros de sintaxe em são sublinhadas com uma linha vermelha ondulada
Tudo o que você tem a fazer é corrigir o erro correspondente e a linha vermelha vai desaparecer de uma vez. No entanto, se você não tiver certeza sobre o que está errado com seu código, basta colocar o cursor do mouse no ponto de exclamação vermelho. O NetBeans IDE tentará ajudá-lo mostrando uma janela pop-up com uma breve explicação do erro, conforme mostrado na Figura 2.
Figura 2 O NetBeans IDE mostra uma explicação de um erro de sintaxe
Depuração de erros de lógica, através da execução de scripts passo a passo
Comparado com erros de sintaxe, erros de lógica são mais difíceis de encontrar. Como o NetBeans IDE não pode identificar e sublinhar erros lógicos, você está sozinho! Vejamos o seguinte script PHP, por exemplo. Ele solicita que o usuário insira dois números e calcula e exibe sua soma. No entanto, ele contém um erro lógico!
<?php $s = 0; echo "Enter 1st value: "; $a = trim(fgets(STDIN)); echo "Enter 2nd value: "; $b = trim(fgets(STDIN)); $S = $a + $b; echo "The sum is: ", $s;?>
se você digitar este script no NetBeans IDE, você notará que não há nem um ponto de exclamação indicando qualquer erro. Se você executar o script (SHIFT + F6), no entanto, e inserir dois valores, 5 e 2, poderá ver por si mesmo que, embora a soma de 5 e 2 Seja 7, o NetBeans IDE insiste que é zero, como mostrado na Figura 3.
Figura 3 visualizando o resultado de um erro lógico na janela de saída
o que diabos está acontecendo? Claro que para um programador especialista, corrigir esse erro seria um pedaço de bolo. Mas para você, um novato, mesmo que você esteja se esforçando, não encontra nada de errado. Então, onde está o erro?Às vezes, os olhos humanos ficam tão cansados que não conseguem ver o óbvio. Então, vamos tentar usar um pouco de magia! Vamos tentar executar o script passo a passo usando o depurador. Isso lhe dá a oportunidade de observar o fluxo de execução e examinar mais de perto os valores atuais das variáveis em cada etapa.
Inicie o depurador selecionando “Debug →
Debug File” no menu principal ou pressionando a combinação de teclas CTRL+SHIFT+F5. Ao fazer isso, você habilita o depurador e mais ícones são exibidos na barra de ferramentas.
aviso: para habilitar o depurador (XDebug), você precisa modificar o PHP.arquivo ini. Mais informações aqui.
o contador do programa (o ícone Seta verde na margem cinza) para na primeira linha do script, conforme mostrado na Figura 4.
Figura 4 Usando o depurador no NetBeans IDE
Aviso: O contador de programa mostra, em qualquer momento, declaração de que é a próxima a ser executada.
clique no ícone “Step into” na barra de ferramentas. Esta ação diz ao interpretador PHP para executar a instrução $s = 0
, e o contador do programa se move para a segunda instrução PHP, que é a próxima a ser executada.
no menu principal, selecione “Janela →
depuração →
variáveis”. Na janela exibida, você pode observar todas as variáveis declaradas na memória principal (RAM) e o valor que elas contêm durante cada etapa da execução. Até agora, a única variável declarada e atribuída a um valor é a variável $s
, conforme mostrado na Figura 5.
Figura 5 O valor da variável $s é apresentado na janela de Variáveis do depurador
Clique em “entrar” ícone da barra de ferramentas novamente. A segunda declaração é executada. Você pode voltar para a janela “saída” e ver o resultado da saída (veja a Figura 6).
Figura 6 visualizando um prompt na janela de saída
clique no ícone da barra de ferramentas” Step into ” novamente. A terceira instrução PHP é executada e o programa espera que você insira um valor. Coloque o cursor dentro da janela” Saída”, digite o valor 5 e pressione a tecla” Enter↵”.
o contador do programa passa para a quarta declaração PHP. Se você voltar para a janela “Variáveis”, poderá ver que, no momento, duas variáveis ($a
e $s
) são declaradas na memória principal (RAM), conforme mostrado na Figura 7.
Figura 7 Os valores das variáveis $a e $s são exibidos na janela de Variáveis
Clique em “entrar” ícone de barra de ferramentas, duas vezes. Esta ação executa a quarta e quinta declarações PHP. Coloque o cursor dentro da janela” Saída”, digite o valor 2 e pressione a tecla” Enter↵”.
o contador do programa passa para a sexta declaração PHP. Se você voltar para a janela “Variáveis”, poderá ver que, neste momento, três variáveis ($a, $b
e $s
) são declaradas na memória principal (RAM), conforme mostrado na Figura 8.
Figura 8 Os valores das variáveis $a, $b
e $s
são exibidas na janela de Variáveis
Clique em “entrar” ícone da barra de ferramentas novamente. A instrução $S = $a + $b
é executada. O que você esperava aqui era a soma de 5 e 2, que é 7, a ser atribuída à variável $s
. Em vez disso, uma nova variável $S
é declarada na memória principal (RAM) e o valor 7 é atribuído a ela, como mostrado na Figura 9.
Figura 9 todas as variáveis declaradas são exibidas na janela Variáveis do depurador
agora fica mais óbvio para você! Você declarou erroneamente duas variáveis na memória principal (RAM), a variável $s
e a variável $S
com um S maiúsculo. Portanto, quando o fluxo de execução vai para a última instrução, echo "The sum is: ", $s
o valor 0 em vez do valor 7 é exibido.
você acabou de encontrar o erro! Clique no ícone” concluir sessão do depurador ” barra de ferramentas para cancelar a execução, corrija o erro alterando a variável $S
para $s
e você está pronto! Você acabou de realizar sua primeira depuração! Execute novamente o script e agora você verá que ele calcula e exibe a soma corretamente.
Depuração de erros lógicos adicionando pontos de interrupção
a depuração passo a passo tem uma grande desvantagem. Você deve clicar no ícone da barra de ferramentas” Step into ” repetidamente até chegar à posição onde o erro pode estar. Você pode se imaginar fazendo isso em um roteiro grande?
para scripts grandes, há outra abordagem. Se você suspeitar que o erro está em algum lugar no final do script, não há necessidade de depurar tudo desde o início. Você pode adicionar um marcador (chamado de “ponto de interrupção”) onde você acha que o erro pode ser, executar o script e quando o fluxo de execução atingir esse ponto de interrupção, o fluxo de execução será pausado automaticamente. Em seguida, você pode examinar mais de perto os valores atuais das variáveis na posição em que o script foi pausado.
Aviso: Quando o script faz uma pausa, você tem duas opções para retomar a execução: você pode adicionar um segundo ponto de interrupção em algum lugar abaixo no script, clique em “Continue” ícone de barra de ferramentas, e permitir que o script para continuar a execução até que o novo ponto de interrupção; ou, você pode usar apenas o “Passo” ícone de barra de ferramentas e execute o script passo a passo a partir de então.
o próximo script PHP solicita que o usuário insira dois valores e calcule seu valor médio.
no entanto, o script contém um erro lógico. Quando o usuário insere os valores 10 e 12, o valor 16, em vez de 11, é exibido.
<?php echo "Enter 1st value: "; $a = trim(fgets(STDIN)); echo "Enter 2nd value: "; $b = trim(fgets(STDIN)); $average = $a + $b / 2; echo "The average value is: ", $average;?>
você suspeita que o problema está em algum lugar no final do script. No entanto, você não deseja depurar todo o script, mas apenas a parte em que o erro pode ser. Então, vamos tentar adicionar um ponto de interrupção na instrução $average = $a + $b / 2
(veja a Figura 10). Existem duas maneiras de fazer isso: você pode clicar na margem cinza esquerda no número da linha correspondente ou colocar o cursor na linha de interesse e clicar na combinação de teclas CTRL+F8.
Figura 10 Adicionar um ponto de interrupção para um script
Aviso: Você sabe que um ponto de interrupção foi definido quando o cor-de-rosa retângulo aparece na margem cinza e a correspondente linha tem fundo rosa, destacando-o.
pressione CTRL + SHIFT + F5 para iniciar o depurador. Clique no ícone da barra de ferramentas” continuar ” e insira os valores 10 e 12 quando solicitado. Você notará que logo depois de inserir o segundo número e clicar na tecla “Enter↵”, o fluxo de execução pausa no ponto de interrupção. (Você verá que o destaque do ponto de interrupção rosa é substituído pelo destaque verde do contador do programa.)
Lembra-te! Você pode depurar um arquivo selecionando “Debug
→
Debug File” no menu principal ou pressionando a combinação de teclas CTRL+SHIFT+F5.
Agora você pode dar uma olhada nos valores atuais das variáveis. As variáveis $a
e $b
contêm os valores 10 e 12 respectivamente, como deveriam, portanto, não há nada de errado com a entrada de dados, como mostrado na Figura 11.
Figura 11 visualizando os valores atuais de duas variáveis na janela Variáveis
clique no ícone “Step into” toolbar uma vez. A instrução $average = $a + $b / 2
é executada e a memória principal (RAM) agora contém os seguintes valores (veja a Figura 12).
Figura 12 visualizando os valores atuais de três variáveis na janela Variáveis
existe! Você acabou de encontrar a declaração que atribui erroneamente um valor de 16, em vez de 11, à variável $average
! E agora vem a parte difícil; você deve considerar por que isso acontece!
depois de dois dias de pensamento, torna-se óbvio! Você tinha acabado de esquecer de colocar $a + $b
entre parênteses; assim, apenas a variável $b
foi dividida por 2. Clique no ícone” concluir sessão do depurador ” barra de ferramentas, remova todos os pontos de interrupção, corrija o erro colocando $a + $b
entre parênteses e você está pronto! Execute novamente o script e veja agora que ele calcula e exibe o valor médio corretamente.