virheenkorjaus PHP skriptejä NetBeans IDE

kuten jo tiedät, kun joku kirjoittaa koodia korkean tason kielellä on kahdenlaisia virheitä, joita hän saattaa tehdä—syntaksivirheitä ja logiikkavirheitä. NetBeans IDE tarjoaa kaikki tarvittavat työkalut, joiden avulla voit debug skriptejä ja löytää virheitä.

virheenkorjaus syntaksivirheet

onneksi NetBeans IDE havaitsee syntaksivirheet kirjoittaessasi ja alleviivaa ne aaltoilevalla punaisella viivalla kuten kuvassa 1.

11

Kuva 1 NetBeans IDE: ssä syntaksivirheet alleviivataan aaltoilevalla punaisella viivalla

sinun tarvitsee vain korjata vastaava virhe ja punainen viiva katoaa kerralla. Jos et kuitenkaan ole varma, mikä koodissasi on vikana, voit asettaa hiiren kursorin punaiselle huutomerkille. NetBeans IDE yrittää auttaa sinua näyttämällä ponnahdusikkunan, jossa on lyhyt selitys virheestä, kuten kuvassa 2.

12

kuva 2 NetBeans IDE näyttää selityksen syntaksivirheelle

virheenkorjaus logiikkavirheille suorittamalla skriptejä vaihe vaiheelta

verrattuna syntaksivirheisiin, logiikkavirheitä on vaikeampi löytää. Koska NetBeans IDE ei voi havaita ja alleviivata logiikkavirheitä, olet aivan yksin! Katsotaanpa seuraavat PHP script, esimerkiksi. Se kehottaa käyttäjää syöttämään kaksi numeroa ja laskee ja näyttää niiden summan. Siinä on kuitenkin logiikkavirhe!

<?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;?>

jos kirjoitat tämän kirjoitusasun NetBeans IDE: hen, huomaat, ettei siinä ole edes yhtä huutomerkkiä, joka viittaisi mihinkään virheeseen. Jos suoritat skriptin (SHIFT + F6), kuitenkin, ja syöttää kaksi arvoa, 5 ja 2, voit nähdä itse, että vaikka summa 5 ja 2 on 7, NetBeans IDE vaatii, että se on nolla, kuten kuvassa 3.

13

kuva 3 Logiikkavirheen tuloksen katselu lähtöikkunassa

mitä ihmettä on tekeillä? Tietenkin asiantunteva ohjelmoija, korjata tämä virhe olisi helppo. Mutta sinä, aloittelija, vaikka yrität kovasti, et löydä mitään vikaa. Missä on virhe?

joskus ihmissilmät väsyvät niin, etteivät näe itsestään selvää. Joten, yritetään käyttää taikuutta! Yritetään suorittaa skripti askel askeleelta käyttäen debuggeria. Tämä antaa sinulle mahdollisuuden tarkkailla suoritusvirtaa ja tarkastella lähemmin muuttujien nykyisiä arvoja kussakin vaiheessa.

Käynnistä debuggeri valitsemalla ”Debug Debug File” päävalikosta tai painamalla CTRL+SHIFT+F5-näppäinyhdistelmää. Tekemällä tämän, otat debuggerin käyttöön ja lisää kuvakkeita näytetään työkalupalkin.

netbeans_debug_toolbar

huomautus: jotta debuggeri (XDebug), sinun täytyy muuttaa PHP.INI-tiedosto. Lisätietoja täältä.

ohjelmalaskuri (vihreä nuoli green_arrow ikoni harmaassa marginaalissa) pysähtyy käsikirjoituksen ensimmäiselle riville kuten kuvassa 4.

14

Kuva 4 debuggerin käyttäminen NetBeans IDE: ssä

Huomautus: ohjelman laskuri näyttää milloin tahansa, mikä lauseke suoritetaan seuraavaksi.

klikkaa” astu ” step_into_netbeans_icon – kuvaketta työkalurivillä. Tämä toiminto käskee PHP-tulkkia suorittamaan lausekkeen $s = 0, ja ohjelmalaskuri siirtyy toiseen PHP-lauseeseen, joka on seuraava suoritettava.

valitse päävalikosta ”Ikkuna virheenkorjaus muuttujat”. Näkyviin ilmestyvässä ikkunassa voit katsella kaikkia päämuistiin (RAM) ilmoitettuja muuttujia ja niiden sisältämää arvoa suorituksen jokaisen vaiheen aikana. Tähän mennessä ainoa Ilmoitettu ja annettu muuttuja on muuttuja $s kuten kuvassa 5 esitetään.

15

kuva 5 muuttujan $s arvo näkyy debuggerin muuttujat-ikkunassa

klikkaa ”astu” step_into_netbeans_icon työkalupalkin kuvaketta uudelleen. Toinen lausunto pannaan täytäntöön. Voit palata ”Output” – ikkunaan ja nähdä tulostuksen tuloksen (katso kuva 6).

16

kuva 6 Kun tarkastelet kehotusta Lähtöikkunassa

klikkaa ”astu” step_into_netbeans_icon työkalupalkin kuvaketta uudelleen. Kolmas PHP lauseke suoritetaan ja ohjelma odottaa, että annat arvon. Aseta kursori ”Output” – ikkunan sisään, kirjoita arvo 5 ja paina ”Enter ↵” – näppäintä.

ohjelmalaskuri siirtyy neljänteen PHP-lauseeseen. Jos palaat ”muuttujat” – ikkunaan, näet, että tällä hetkellä päämuistiin (RAM) on julistettu kaksi muuttujaa ($a ja $s), kuten kuvassa 7 on esitetty.

17

Kuva 7 muuttujien $A ja $s arvot näkyvät muuttujien ikkunassa

klikkaa ”astu” step_into_netbeans_icon työkalupalkin kuvaketta kahdesti. This action executes the fourth and fifth PHP statements. Aseta kursori ”Output” – ikkunan sisään, kirjoita arvo 2 ja paina ”Enter ↵” – näppäintä.

ohjelmalaskuri siirtyy kuudenteen PHP-lauseeseen. Jos palaat ”muuttujat” – ikkunaan, näet, että tällä hetkellä päämuistiin (RAM) julistetaan kolme muuttujaa ($a, $b ja $s) kuten kuvassa 8 esitetään.

18

Kuva 8 muuttujien $a, $b ja $s arvot näkyvät muuttujien ikkunassa

klikkaa ”astu” step_into_netbeans_icon työkalupalkin kuvaketta uudelleen. Lausuma $S = $a + $b on toteutettu. Odotit tässä, että muuttujalle $sannettaisiin 5: n ja 2: n summa, joka on 7. Sen sijaan päämuistiin (RAM) julistetaan uusi muuttuja $S ja sille annetaan arvo 7, kuten kuvassa 9 esitetään.

19

Kuva 9 kaikki ilmoitetut muuttujat näkyvät debuggerin muuttujat-ikkunassa

nyt se käy sinulle ilmeisemmäksi! Olet virheellisesti ilmoittanut päämuistiin (RAM) kaksi muuttujaa, muuttujan $s ja muuttujan $S isolla S: llä. Niinpä kun suoritusvirtaus menee viimeiseen lauseeseen, echo "The sum is: ", $s arvon 7 sijasta näytetään arvo 0.

olet juuri löytänyt virheen! Napsauta ”Lopeta debuggeri-istunto” finish_debugger_netbeans työkalupalkin kuvaketta peruuttaaksesi suorituksen, korjaa virhe muuttamalla muuttujaa $S arvoon $s, ja olet valmis! Suoritit juuri ensimmäisen vianetsintäsi! Suorita skripti uudelleen ja näet nyt, että se laskee ja näyttää summan oikein.

virheenkorjauksen logiikkavirheitä lisäämällä keskeytyspisteitä

virheenkorjauksen vaihe vaiheelta on suuri haitta. Sinun täytyy klikata ”Step into” step_into_netbeans_icon työkalupalkin kuvaketta uudelleen ja uudelleen, kunnes saavutat paikan, jossa virhe saattaa olla. Voitko kuvitella tekeväsi tämän Isossa käsikirjoituksessa?

suurille skripteille on olemassa toinen lähestymistapa. Jos epäilet, että virhe on jossain lopussa skripti ei tarvitse debug kaikki alusta alkaen. Voit lisätä merkin (kutsutaan” keskeytyspisteeksi”), jossa luulet virheen olevan, suorita skripti ja kun suorituksen virtaus saavuttaa keskeytyspisteen, suorituksen virtaus pysähtyy automaattisesti. Tämän jälkeen voit tarkastella lähemmin muuttujien nykyisiä arvoja kohdassa, jossa skripti pysäytettiin.

huomautus: kun skripti pysähtyy, sinulla on kaksi vaihtoehtoa suorituksen jatkamiselle: voit lisätä toisen keskeytyspisteen jonnekin komentosarjan alapuolelle, klikkaa ”Jatka” continue_debug_toolbar työkalupalkin kuvaketta ja antaa komentosarjan jatkaa suoritusta uuteen keskeytyspisteeseen asti, tai voit käyttää ”Step into” step_into_netbeans_icon työkalupalkin kuvaketta ja suorittaa komentosarjan vaihe vaiheelta sen jälkeen.

Seuraava PHP-skripti kehottaa käyttäjää syöttämään kaksi arvoa ja laskee niiden keskiarvon.

kirjoituksessa on kuitenkin logiikkavirhe. Kun käyttäjä syöttää arvot 10 ja 12, näkyy arvo 16 11: n sijasta.

<?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;?>

epäilet, että ongelma on jossain käsikirjoituksen lopussa. Kuitenkin, et halua debug koko skripti, mutta vain osa, jossa virhe voi olla. Yritetään siis lisätä katkeamispiste $average = $a + $b / 2 lauseeseen (KS. Kuva 10). On kaksi tapaa tehdä tämä: voit klikata vasemmassa harmaassa marginaalissa vastaavaa rivinumeroa, tai voit asettaa kursorin kiinnostavalle riville ja painaa CTRL + F8-näppäinyhdistelmää.

Kuva 10 keskeytyspisteen lisääminen skriptiin

ilmoitus: tiedät, että keskeytyspiste on asetettu, kun Vaaleanpunainen suorakulmio ping_rectangle_netbeans näkyy harmaassa marginaalissa ja vastaavalla rivillä on vaaleanpunainen tausta, joka korostaa sitä.

paina CTRL + SHIFT + F5 käynnistääksesi debuggerin. Klikkaa ”Jatka” continue_debug_toolbar työkalupalkin kuvaketta ja anna pyydettäessä arvot 10 ja 12. Huomaat, että heti kun syötät toisen numeron ja painat ”Enter ↵” – näppäintä, suorituksen virtaus pysähtyy keskeytyspisteessä. (Näet, että vaaleanpunainen keskeytyspisteen korostus korvataan vihreällä ohjelmalaskurin korostuksella.)

muista! Voit debugata tiedoston valitsemalla ”Debug Debug File” päävalikosta tai painamalla CTRL+SHIFT+F5-näppäinyhdistelmää.

nyt voit tarkastella lähemmin muuttujien nykyisiä arvoja. Muuttujat $a ja $b sisältävät arvot 10 ja 12, kuten pitääkin, joten tietojen syöttämisessä ei ole mitään vikaa, kuten kuvassa 11 esitetään.

21

Kuva 11 kahden muuttujan nykyiset arvot muuttujien ikkunassa

klikkaa ”astu” step_into_netbeans_icon työkalupalkin kuvaketta kerran. Lauseke $average = $a + $b / 2 suorittaa ja päämuisti (RAM) sisältää nyt seuraavat arvot (KS.Kuva 12).

22

Kuva 12 kolmen muuttujan nykyarvot muuttujien ikkunassa

siinä se on! Löysit juuri lauseen, joka virheellisesti antaa arvon 16, eikä 11, muuttujalle $average! Ja nyt tulee vaikea osuus; sinun pitäisi miettiä, miksi näin tapahtuu!

kahden päivän pohdinnan jälkeen se käy ilmeiseksi! Olit juuri unohtanut liittää $a + $b sulkujen sisään; näin ollen vain muuttuja $b jaettiin 2: lla. Napsauta ”Lopeta debuggeri-istunto” finish_debugger_netbeans työkalupalkin kuvaketta, poista kaikki keskeytyspisteet, korjaa virhe sulkemalla $a + $b sulkujen sisään ja olet valmis! Suorita skripti uudelleen ja katso nyt, että se laskee ja näyttää keskiarvon oikein.

Leave a Reply

Sähköpostiosoitettasi ei julkaista.