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
Á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
Most nyomja meg a
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
Á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ó
sajtó
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.
Á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?