Ebben a témakörben megtanulhatja, hogyan kell webes alkalmazásokat hibakeresni, és megértheti a webes alkalmazások egyik legfontosabb témáját: a Get és a WebGet közötti különbséget. Sem a hibakeresés, sem a WebGet nem bonyolult téma, de mindkettő olyan eset, ahol egy egyszerű teszteset igazán segíthet megérteni a működésüket.

A programozók egy olyan típusú problémával találkoznak, amikor a program lefordítódik, de aztán a várttól eltérően viselkedik. Megtudhatja, hogyan oldhatja meg az ilyen problémákat a hibakereső segítségével.

Hibakeresés

A hibakeresés egy program futásidejű viselkedésének megfigyelése és a szemantikai hibák helyének meghatározása. A hibakeresővel megszakíthatja (felfüggesztheti) a program végrehajtását, hogy megvizsgálhassa a kódját, kiértékelhesse és szerkeszthesse a programban lévő változókat, megtekinthesse az adatbázis-táblák adatait, és ellenőrizheti a forráskódban lévő utasítások végrehajtását.

Fontos!

Ez a szakasz feltételezi, hogy lépésről lépésre végigment a Gyorsindítás oktatóanyagon.

Ha kihagyta a Gyorsindítás Windows-alkalmazás részét, akkor most olvassa el a Fordítói hibák kezelése részt, és térjen vissza erre az oldalra, ha befejezte.

A “Hello World” webes nézet kódjában olyan változtatásokat fog végrehajtani, amelyek hatására az másképp viselkedik, mint ahogyan azt szeretné. Ezután megtanulod, hogyan használd a hibakeresőt a probléma felkutatására és megoldására.

1. Váltson vissza a HelloWorld.wo fájlra a Studioban.

Tipp

A Ctrl + Tab vagy a Ctrl + Shift + Tab billentyűkombinációval görgethet az összes megnyitott nézetben.

Ha már egy nagyobb projektben dolgozik, és több fájl van nyitva, hasznos lehet a Fájlnavigátor ablakot dokkolt ablakként nyitva hagyni. Ha a Fájlnavigátor még nincs megnyitva, akkor a Fájlnavigátor eszköztár gombjára kattintva nyithatja meg.

Tipp

Ha duplán kattint bármelyik fájlra a Munkaterület-kutatóban:

  • Ha a fájl még nincs megnyitva, akkor megnyílik.
  • Ha a fájl már meg van nyitva, de nem az éppen aktív ablak, akkor az aktív ablak lesz.
  • Ha a fájl már meg van nyitva, és ez az aktuálisan aktív ablak, a nézet váltani fog a kódszerkesztő és a tervező között (ha a fájl modellezhető a tervezőben).

Tipp

Ha a Studio fő ablaktábláján annyi ablak van nyitva, hogy egy sorban meghaladja a lapok számára rendelkezésre álló helyet, a lapok görgetni kezdenek, és a nyílbillentyűkkel jobbra és balra görgethet, hogy több lapot láthasson.

Alternatív megoldásként az Eszközök > Stúdió konfigurálása… menüpontban úgy konfigurálhatja a Studio-t, hogy több lapsor jelenjen meg.

A Stúdióban való navigálással kapcsolatos további információkat a Stúdió súgójában talál.

2. Kattintson duplán az OnClick eljárásra a Code Explorerben a funkció kódjának megjelenítéséhez.

3. Módosítsa a sort

WebGet psValue of oNameForm to sName

a  címre.

Get psValue of oNameForm to sName

4. Kattintson a Studio eszköztárának Futtatás gombjára.

Az alkalmazás futtatásakor a böngészőnek meg kell jelenítenie a http://localhost/QuickStart/Index.html oldalt.

Kattintson a Nézetek menüre, majd a Hello World-re a nézet megnyitásához.

5. Írja be a nevét a Name feliratú űrlapba (a Type your name here helyett írja be a nevét), majd kattintson a Go gombra.

Amikor ezt a kódváltoztatás előtt futtatta, az üzenetmezőben a “Hello, {Az Ön neve}” feliratot látta.

Most azonban az üzenőmezőben csak a Hello, .

Ez elég komoly és trükkös programozási problémákat eredményezhet. Most a hibakeresőt fogja használni a történtek felkutatására.

6. Hagyja futni a programot, és váltson vissza a Stúdióba. Kattintson a kódszerkesztő bal oldali margóján a kódsor mellé

Get psValue of oNameForm to sName

7. Ez egy piros pontot fog elhelyezni a bal margón, jelezve, hogy épp most helyezett el egy töréspontot ezen a kódsoron.

Töréspontok

A hibakeresők úgy működnek, hogy a végrehajtó programokat megállásra késztetik, és ezen a “befagyasztott” időpontban vizsgálják a programot. A kódsorokon elhelyezett töréspontok hatására a hibakereső megállítja a programot, amikor eléri az adott kódsort, közvetlenül annak végrehajtása előtt.

8. Most a programot addig a kódsorig fogja végrehajtani, hogy a hibakereső ezen a ponton megálljon. Mivel a töréspont a Go (oGoButton) gombobjektum OnClick eljárásában van, a programodat le kell futtatnod, és a Go gombra kell kattintanod, hogy a debugger a program kódját a töréspontig futtassa.

Térjen vissza a futó programhoz, győződjön meg róla, hogy a neve még mindig az űrlapon van, és kattintson ismét a Go gombra.

Ezúttal a programot a hibakereső a töréspontnál megállítja.

9. Ha az OnClick eljárás bármelyik helyi változója fölé helyezi az egérkurzort, akkor a változó aktuális értéke felugrik egy tooltippként. Természetesen a kód ezen pontján minden változónak üresnek kell lennie.

Figyelje meg a bal margón lévő zöld nyilat is, amely jelenleg átfedi az elhelyezett töréspont piros pontját. A zöld nyíl azt a sort jelzi, amelyen a program jelenleg “befagyott”. Ez a következő sor, amely a programban végrehajtásra kerül.

10. Vessen egy pillantást a Locals ablakra. Ha a Locals ablak nincs megnyitva, kattintson a Studio eszköztárának Locals ikonjára.

Ez megnyitja a Locals ablakot, amely felsorolja az összes helyi változót és azok aktuális értékeit. Ezt az ablakot hasznos nyitva tartani hibakeresés közben, mivel tükrözi az összes helyi változó értékét, ahogy a kódon keresztül haladunk.

11. Kattintson a Studio eszköztárának Step Over gombjára (vagy nyomja le az F10 billentyűt).

Lépés a kódon keresztül

A kódon való átlépés fontos hibakeresési koncepció. A lépés hatására a hibakereső azt mondja a hibakeresett programnak, hogy a kódsorokat az Ön utasítása szerint hajtsa végre.

A leggyakoribb lépéstípus a Step Over, amely az aktuális metódusban marad, és végrehajtja az aktuálisan kiválasztott kódsort (a zöld nyíllal jelzett sort).

12. A hibakereső végrehajtotta a sort

Get psValue of oNameForm to sName

Vegyük észre, hogy az sName változó most a “Type your name here” (Írd be ide a neved) szöveget tartalmazza. Ezt láthatjuk a Locals ablakban és akkor is, ha az egérkurzort az sName változó fölé tartjuk bárhol a Procedure OnClick-en belül.

A “Get psValue of oNameForm to sName” kódsornak le kellett volna kérnie a Name formban lévő értéket (az Ön nevét), és azt az sName változóba kellett volna helyeznie, de ehelyett az sName üres. Valami hiba történt az űrlap értékének lekérdezése során.

13. Kattintson a Step Over eszköztár gombra.

Vegye észre, hogy

Piros értékek a Locals ablakban

Észre fogja venni, hogy az sResult értéke piros színnel jelenik meg a Locals ablakban. Ez egy vizuális jelzés, amely azt jelzi, hogy az sResult értéke éppen most változott.

14. Amit ebben a vizsgálatban keresünk, az az űrlap értéke. Ezt az oNameForm űrlap psValue tulajdonsága tárolja.

Vessünk egy pillantást a Watches ablakra. Ha a Watches ablak nincs megnyitva, kattintson a Studio eszköztárának Watches ikonjára.

Ez megnyitja a Watches ablakot, egy másik hasznos ablakot, amelyet hibakeresés közben érdemes nyitva tartani. A Watches ablakban bármilyen kifejezés megjeleníthető, amelyet hibakeresés közben ki akar értékelni. Próbálja ki a következőképpen:

  • A Watches ablakba sok mindent beírhatsz, vagy behúzhatsz és eldobhatsz, változókat, tulajdonságokat, kiértékelendő kifejezéseket (x + y). Most éppen az oNameForm psValue tulajdonságának értékét szeretnénk látni.

Kattintsunk a Watches ablak Name oszlopában az első üres sorra; írjuk be (psValue(oNameForm)) és nyomjuk meg az Entert.

Látni fogja, hogy az Érték oszlopban megjelenik az oNameForm psValue tulajdonságának értéke, ami a jelenlegi példánkban “”.

  • Ez az eredmény összhangban van azzal, amit az üzenőmező mutat.

Az történik, hogy mind az oNameForm psValue tulajdonsága, mind a program által végrehajtott Get parancs a psValue tulajdonság kezdeti értékét kérte le, ami nem a tervezett érték.

Van mód arra, hogy a Debuggerben megjelenítse egy tulajdonság aktuális értékét.

Kattintson a következő üres sor Watches ablakának Name oszlopába, és írja be a (_wp(oNameForm, “psValue”)) parancsot, majd nyomja le az Enter billentyűt.

Látni fogja, hogy az Érték oszlopban most már a “Dennis” (az Ön esetében valószínűleg ez lesz a neve) jelenik meg a jelenlegi mintánkban.

15. Győződjön meg róla, hogy visszamegy, és kijavítja a kódot. Változtassa meg a sort

Get psValue of oNameForm to sName

vissza

WebGet psValue of oNameForm to sName

WebGet vs. Get magyarázata

A _wp függvény egy webes tulajdonság aktuális értékét adja vissza a hibakeresőben (csak a hibakeresőben). A WebGet parancs ugyanezt a funkcionalitást biztosítja egy futó webes alkalmazásban.

Egy tulajdonság értékének egyszerű lekérdezése a (PropertyName(ObjectName)) segítségével a hibakeresőben egy webes tulajdonság kezdeti értékét adja vissza. A Get parancs ugyanezt a funkcionalitást biztosítja egy futó webes alkalmazásban.

A WebGet és a Get (valamint a WebSet és a Set) közötti különbség megértése kulcsfontosságú a webes alkalmazások programozásához. Remélem, hogy a fenti egyszerű példa rávilágított a kettő közötti különbségre.

Lépjen hátra egy kicsit, és gondolja át ezt a leckét. Miközben az egyes lépéseket végezte, lehet, hogy a különböző hibakereső ablakok megtanulására összpontosított, hogy valóban a lecke nagy egészére koncentráljon.

Egy futó webes alkalmazás tulajdonságainak lekérdezésekor és beállításakor szinte mindig a WebGet és a WebSet, nem pedig a Get és a Set parancsokat kell használni. A WebGet és WebSet a tulajdonságok aktuális értékeivel dolgozik, nem pedig a kezdeti értékeikkel. Ha tehát egy futó programban lévő, a felhasználó(k) által esetleg megváltoztatott tulajdonságértékekhez szeretne hozzáférni, használja a WebGet és WebSet parancsokat!

Javasoljuk, hogy töltsön el egy kis időt hibakereséssel, ez egy nagyon hatékony eszköz, és az itt bemutatott funkciók alig karcolják a felszínét annak, amit tehet. A hibakeresés elsajátítása segít megérteni a DataFlex működését, és jobb programozóvá teszi Önt!

A hibakereséssel kapcsolatos további információkat a Studio súgókönyv Hibakeresés témakörében talál.