Debugging PHP Scripts with NetBeans IDE
som du allerede vet, når noen skriver kode på et språk på høyt nivå, er det to typer feil som han eller hun kan gjøre-syntaksfeil og logikkfeil— NetBeans IDE gir alle nødvendige verktøy for å hjelpe deg med å feilsøke skriptene dine og finne feilene.
Feilsøking av syntaksfeil
Heldigvis oppdager NetBeans IDE syntaksfeil mens du skriver og understreker dem med en bølget rød linje som vist i Figur 1.
Figur 1 I NetBeans IDE er syntaksfeil understreket med en bølget rød linje
Alt du trenger å gjøre er å rette den tilsvarende feilen, og den røde linjen vil forsvinne samtidig. Men hvis du ikke er sikker på hva som er galt med koden din, kan du bare plassere musepekeren på det røde utropstegnet. NetBeans IDE vil prøve å hjelpe deg ved å vise et popup-vindu med en kort forklaring på feilen, som vist i Figur 2.
Figur 2 NetBeans IDE viser en forklaring på en syntaksfeil
Feilsøkingslogikkfeil ved å utføre skript trinnvis
sammenlignet med syntaksfeil er logikkfeil vanskeligere å finne. Siden NetBeans IDE ikke kan oppdage og understreke logiske feil, er du helt alene! La oss se på FØLGENDE PHP script, for eksempel. Det ber brukeren om å skrive inn to tall og beregner og viser sin sum. Den inneholder imidlertid en logisk feil!
<?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;?>
hvis Du skriver dette skriptet Inn I NetBeans IDE, vil du legge merke til at det ikke engang er et utropstegn som indikerer noen feil. Hvis du utfører skriptet (SHIFT+F6), og angir to verdier, 5 og 2, kan Du se selv at Selv om summen av 5 og 2 er 7, insisterer NetBeans IDE at den er null, som vist i Figur 3.
Figur 3 Viser resultatet av en logisk feil i Utdatavinduet
Hva skjer? Selvfølgelig for en ekspertprogrammerer, ville det være et stykke kake å korrigere denne feilen. Men for deg, en nybegynner, selv om du prøver hardt, finner du ingenting galt. Så, hvor er feilen?
noen ganger blir menneskelige øyne så trette at de ikke kan se det åpenbare. Så, la oss prøve å bruke litt magi! La oss prøve å utføre skriptet trinnvis ved hjelp av feilsøkeren. Dette gir deg muligheten til å observere utførelsesflyten og se nærmere på de nåværende verdiene for variabler i hvert trinn.
Start debuggeren ved å velge «Debug →
Debug File» fra hovedmenyen eller ved Å trykke PÅ CTRL + SHIFT + F5 tastekombinasjonen. Ved å gjøre dette, aktiverer du debugger og flere ikoner vises på verktøylinjen.
Merknad: for å aktivere debugger (XDebug), må DU endre PHP.ini-fil. Mer informasjon her.
programtelleren (den grønne pilen ikonet i den grå margen) stopper ved første linje i skriptet som vist i Figur 4.
Figur 4 Bruke debuggeren i NetBeans IDE
Merknad: programtelleren viser deg når som helst hvilken setning som skal utføres.
Klikk på» Trinn inn » ikonet på verktøylinjen. Denne handlingen forteller PHP-tolken å utføre setningen $s = 0
, og programtelleren beveger seg til den andre PHP-setningen, som er den neste som skal utføres.
fra hovedmenyen velger du «Vindu →
Feilsøking →
Variabler». I vinduet som vises, kan du se alle variablene deklarert i hovedminnet (RAM) og verdien de inneholder under hvert trinn av utførelse. Hittil er den eneste variabelen deklarert og tildelt en verdi variabelen $s
som vist i Figur 5.
Figur 5 verdien av variabel $s vises i Vinduet Variabler i debugger
Klikk på» Trinn inn » verktøylinjeikonet igjen. Den andre setningen utføres. Du kan gå tilbake til» Output » – vinduet og se utgangsresultatet (Se Figur 6).
Figur 6 Viser en melding i Utdatavinduet
Klikk på» Trinn inn » verktøylinjeikonet igjen. Den tredje PHP-setningen utføres, og programmet venter på at du skal skrive inn en verdi. Plasser markøren inne i» Output «- vinduet, skriv inn verdien 5, og trykk på» Enter ↵ » – tasten.
programtelleren går til den fjerde PHP-setningen. Hvis du går tilbake til» Variabler » – vinduet, kan du se at for øyeblikket er to variabler ($a
og $s
) deklarert i hovedminnet (RAM), som vist i Figur 7.
Figur 7 verdiene av variablene $a og $s vises i Variabels-vinduet
Klikk på» Trinn inn » verktøylinjeikonet to ganger. Denne handlingen utfører den fjerde og femte PHP-setningen. Plasser markøren inne i» Output «- vinduet, skriv inn verdien 2, og trykk på» Enter ↵ » – tasten.
programtelleren går til den sjette PHP-setningen. Hvis du går tilbake til» Variabler » – vinduet, kan du se at tre variabler ($a, $b
og $s
) for øyeblikket er deklarert i hovedminnet (RAM)som vist i Figur 8.
Figur 8 verdiene av variabler $a, $b
og $s
vises i Variabelvinduet
Klikk på «Trinn inn» verktøylinjeikonet igjen. Erklæringen $S = $a + $b
utføres. Det du forventet her var summen av 5 og 2, som er 7, som skal tilordnes variabel $s
. I stedet for dette er en ny variabel $S
deklarert i hovedminnet (RAM)og verdien 7 er tildelt den, som vist i Figur 9.
Figur 9 Alle deklarerte variabler vises i Variabelvinduet til debuggeren
Nå blir det tydeligere for deg! Du deklarerte feilaktig to variabler i hovedminnet (RAM), variabelen $s
og variabelen $S
Med en stor s. Så når utførelsesflyten går til den siste setningen, vises echo "The sum is: ", $s
verdien 0 i stedet for verdien 7.
du har nettopp funnet feilen! Klikk på» Finish Debugger Session » verktøylinjeikonet for å avbryte utførelsen, korrigere feilen ved å endre variabel $S
til $s
, og du er klar! Du har nettopp utført din første feilsøking! Utfør skriptet på nytt, og du vil nå se at det beregner og viser summen riktig.
Feilsøkingslogikkfeil ved å legge til stoppunkter
Feilsøking trinnvis har en stor ulempe. Du må klikke på» Trinn inn » verktøylinjeikonet igjen og igjen til du kommer til posisjonen der feilen kan være. Kan du forestille deg å gjøre dette i et stort skript?
for store skript er det en annen tilnærming. Hvis du mistenker at feilen er et sted på slutten av skriptet, er det ikke nødvendig å feilsøke alt fra begynnelsen. Du kan legge til en markør (kalt en «stoppunkt») der du tror at feilen kan være, kjøre skriptet og når flyten av kjøring når det stoppunkt, flyten av kjøring vil pause automatisk. Du kan deretter se nærmere på de nåværende verdiene til variablene i posisjonen der skriptet ble pauset.
Merknad: når skriptet stopper, har du to alternativer for å gjenoppta utførelsen: du kan legge til et nytt stoppunkt et sted under i skriptet, klikk på» Fortsett « verktøylinjeikonet, og la skriptet fortsette å utføre til det nye stoppunktet; eller du kan bare bruke» Trinn inn » verktøylinjeikonet og utføre skriptet trinnvis etterpå.
DET neste PHP-skriptet ber brukeren om å skrive inn to verdier og beregner gjennomsnittsverdien.
skriptet inneholder imidlertid en logisk feil. Når brukeren angir verdiene 10 og 12, vises verdien 16, i stedet for 11.
<?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;?>
du mistenker at problemet er et sted på slutten av skriptet. Du vil imidlertid ikke feilsøke hele skriptet, men bare den delen der feilen kan være. Så, la oss prøve å legge til et stoppunkt på $average = $a + $b / 2
– setningen (Se Figur 10). Det er to måter å gjøre dette på: du kan klikke i venstre gråmarg på det tilsvarende linjenummeret, eller du kan plassere markøren på interesselinjen og trykke CTRL + F8-tastekombinasjonen.
Figur 10 Legge til et stoppunkt i et skript
Merknad: Du vet at et stoppunkt er angitt når det rosa rektangelet vises i den grå margen, og den tilsvarende linjen har rosa bakgrunn som markerer den.
Trykk CTRL + SKIFT + F5 for å starte debuggeren. Klikk på» Fortsett » verktøylinjeikonet og skriv inn verdiene 10 og 12 når du blir bedt om det. Du vil legge merke til at like etter at du har tastet inn det andre nummeret og trykket på» Enter ↵ » – tasten, stopper utførelsesstrømmen ved stoppunktet. (Du vil se at den rosa stoppunkt utheving er erstattet av den grønne utheving av programmet telleren.)
Husk! Du kan feilsøke en fil ved å velge «Debug
→
Debug File» fra hovedmenyen eller ved å trykke PÅ CTRL + SHIFT + F5 tastekombinasjonen.
nå kan du se nærmere på de nåværende verdiene til variablene. Variablene $a
og $b
inneholder henholdsvis verdiene 10 og 12, som de burde, så det er ingenting galt med datainngangen, som vist i Figur 11.
Figur 11 Viser gjeldende verdier av to variabler i Vinduet Variabler
Klikk på» Trinn inn » verktøylinjeikonet en gang. Setningen $average = $a + $b / 2
utfører og hovedminnet (RAM) inneholder nå følgende verdier (Se Figur 12).
Figur 12 Viser gjeldende verdier av tre variabler i Variabelvinduet
Der er det! Du har nettopp funnet setningen som feilaktig tilordner en verdi på 16, i stedet for 11, til variabelen $average
! Og nå kommer den vanskelige delen; du bør vurdere hvorfor dette skjer!
etter to dagers tenkning blir det åpenbart! Du hadde nettopp glemt å legge inn $a + $b
inne i parenteser; dermed ble bare variabelen $b
delt med 2. Klikk på» Fullfør Debugger Session » verktøylinjeikonet, fjern alle brytepunkter, rett feilen ved å omslutte $a + $b
inne i parenteser, og du er klar! Utfør skriptet på nytt og se nå at det beregner og viser gjennomsnittsverdien riktig.