Tudd Intuíció, előadás, hibakeresés és tesztelés

Munka a debugger

Térjünk át az elmélettől a gyakorlatig. Töltse Lazarus egy új projekt, meg a forma egyszerű gombra, és mentse a projekt egy mappát 27-01. Project nevű, formák, modulok, és nem kell változtatni egy gombot, hagyja a nevét az alapértelmezett adatokat.

Ezután létre a onclick esemény a gomb, amely levelet a következő kódot:

Mit csinálunk itt? Használata egész változó i Ami a számláló ciklust. Ciklus termék -3 és 3, azaz a 7-szer, beleértve a nullát. A hurok teste osztjuk 10 az i értékét. eredményeként készül, mint egy húr st, és hozzá a sztringlistát. Azt már korábban említettük, hogy az ilyen intézkedések közé kell rakni a kivételkezelés blokk try-végre-end. amit meg is tettünk.

Ha alaposan tanulmányozta a természetesen a szabad szemmel látható, hogy a negyedik iterációs hurok előfordul futásidejű hiba - osztály 10 nullára. Ilyen kézenfekvő példa a legalkalmasabb, hogy felfedezzük a beépített debugger, mint tudja, hol van egy hiba, és képes lesz arra, hogy elemezze a munkát a debugger. Ezért mintha nem gyanítja hibát.

Így írt egy programot, hogy továbbra is, itt az ideje, hogy lefordítani. Kattintson a „Start” a Control Panel (vagy ). A program általában összeállításához és futtatásához. Rákattintok Button1. És akkor mi a hibaüzenet:

Tudd Intuíció, előadás, hibakeresés és tesztelés


Ábra. 27.3. hibaüzenet Lazarus

A jelentés szerint, hiba történt végrehajtása során a kód 42. sorban. Nos, kattintson az „OK” és a „Run -> Reset Debugger”, hogy állítsa le a programot. Térjünk vissza a kódot, és elemezze a 42-edik sorának (ha hozzáadott egy üres karakterlánc, akkor lesz egy másik szám):

Nos, semmi bűnügyi nincs itt, miért jelentkezett a hiba? Kód érvényes, és általában el kell végezni ... Ha megy egy hasonló zsákutcába. segítségével a józan ész és egy integrált debugger. A józan ész azt mondja, hogy hiba valahol a szervezetben a hurok. És egy nyomkövető, szükséges, hogy függessze fel az a program végrehajtása ebben a ciklusban, majd folytatni a sort. Ahhoz, hogy állítsa le a program az úgynevezett töréspont (Eng. Töréspont).

Pont ostanova- ezt a sort végrehajtása előtt, hogy a hibakereső felfüggeszti a program végrehajtását, és várjuk a további intézkedéseket.

Beállítható egy pont vagy több, különböző részein a kódot. Mivel a hiba a 42-edik sor, akkor ésszerű, hogy függessze fel a végrehajtását a korábbi 41-ik sorban. Vigye a kurzort a ezt a sort, hogy bármely helyen.

Állítsa be a töréspont lehet a legkülönfélébb módokon:

Az utolsó két módszer a legkényelmesebb, de választhat. Mindenesetre, a húr a beállított töréspont pirosra:


Ábra. 27.4. húr töréspont

Távolítsuk el a töréspont is kényelmes, hogy az utóbbi két módszer. Töréspont van, ismét nyomja meg a „Start” gombra. A program kezdődik a munka, kattintson a „Button1” gombra.


Ábra. 27.5. A string végrehajtandó további

Jelenleg nem függvényhívás, így tudjuk kihasználni a két . és (Leggyakrabban használt - Lépés alatt).

Most nyomja meg a . és a debugger hajt végre töréspontot vonal és hozzá egy szürke következő sorban. kattintson újra . és ismét lesz kiemelve ezt a vonalat - befejeződött ciklus lépést. Ha rákattint egy párszor . akkor megjelenik a képernyőn minden ugyanazokat a hibákat, ami meggátolja a további a program végrehajtását. Világossá válik, hogy a ciklus hőmérséklet általában néhány menetben, akkor még mindig van egy hiba. Bekapcsolása logika: a cikluson belül csak megváltoztatja az i változó. ezért a hiba valamilyen módon összefügg vele. És honnan tudod, hogyan?

Itt jön a támogatás másik hasznos eszköz debugger - figyelemmel kíséri a változók értékei. Állítsa vissza a programot a "Run -> Reset debugger." Most nyomja meg a gombot újra, „Start”, majd ismét a „Button1” gombra. Debugger ismét felfüggesztette az a program végrehajtását a sorban a ciklusban, de ne rohanjon nyomja . A kezdéshez add megfigyelése i változó. Ez történt a „Run -> Add megfigyelés”, ami nem volt elérhető, amíg a program nem kezdődött meg. A „Expression” adja meg a változó i. és kattintson az „OK”:

Tudd Intuíció, előadás, hibakeresés és tesztelés


Ábra. 27.6. Telepítése kíséri a változó

Most a hibakereső figyeli a változó értékei i. de mi sem jobb - nem látjuk ezeket az értékeket! Látni őket, meg kell jeleníteni az ablakot megfigyelési listán. Ez történik a parancs „Nézet -> Windows Debug -> megfigyelése Window” vagy „gyorsbillentyűk” .

hogy mi kell számítani a ciklust. A megfigyelési listán, és látni fogja az i változóra. és kifejezés. és jelentésük:


Ábra. 27.7. Megfigyelési lista ablak

Mivel az i változó még nem rendelt értéket -3, oszlop értékeit, akkor valószínű, hogy 1. inicializált a változó alapértelmezés szerint. A vonatkozó érték lesz a kifejezés. Most már készen állunk, hogy továbblépjünk. sajtó . A figyelőlista azonnal megváltozott a kép - i most egyenlő -3, és az expressziós -3,3333 ...

sajtó újra. Ismét, az értékek megváltoztak, és most i = -2. és az expressziós = -5. Tisztában vagyunk azzal, hogy a ciklus működik, és két lépésre került sor. sajtó még két alkalommal. Most a változó egy nulla, és kifejezése a „inf”. Azonban az összhangban van a számítás még nem kész, ne felejtsd el. ismét nyomja meg . és megint kap egy hiba. És a változók értékei és kifejezések látjuk a „értékelése”, azaz magyarul „értékelés”. Most világosan látni, hogy a vonal

hiba lép fel, ha a változó i egyenlő nullával. És itt nem nehéz kitalálni, hogy miért ez a hiba lép fel -, mert van egy kísérlet szétválási 10-0.

Tudd Intuíció, előadás, hibakeresés és tesztelés


Ábra. 27.8. A kapott üzenet programot

Mint látható, a számítás. ahol i egyenlő nullával, akkor elmarad.

Beépített hibakereső egyéb eszközöket, amelyekkel képes leszel, hogy megszokja idővel kísérletezni velük.

Köszönöm a csodálatos természetesen!

Az önálló munka №2 összeállításához MyCript.pas modul (OS: Windows 7 x64, Lazarus 1.4 Win64) kiadott egy hiba assembly kódot

mycript.pas (54,5) Hiba: Asm: [tolja reg32] érvénytelen kombinációját műveleti kód és operandusok
mycript.pas (95,5) Hiba: Asm: [pop reg32] érvénytelen kombinációját műveleti kód és operandusok

Megértem, hogy a pálya kész a 32 bites operációs rendszer, de mi a helyzet abban az esetben a 64 bites rendszereket?

A rakodók FileCreate menüpontok és FileOpen, valamint a záró formájában felvezető OnClose - e három eljárások ugyanazt a kódot tartalmazza

nekik, mielőtt az új szöveg>
ha Memo1.Modified ezután kezdődik
// ha a felhasználó vállalja, hogy mentse a változásokat:
ha MessageDlg ( „Mentés másként”
„A jelenlegi fájl megváltozott. Változások mentése?
mtConfirmation, [mbYes, mbNo, mbIgnore], 0) = mrYes majd
FileSaveClick (feladó);
végén; // ha

Hadd kérdezzem meg: nem lenne jobb, ha ezt a kódot egy külön eljárás, például - formájában egy eseménykezelő OnCloseQuery? Amennyire vissza tudok emlékezni Delphi tapasztalat, hívja ezt az eljárást önmagában nem vezethet bezárása formájában. Ez azt jelenti, hogy lehet használni eljárások Memo1 tisztítás és olvasni a fájlt. Vagy Lazarus nem tudod?

Kapcsolódó cikkek