Xcode hibakeresés töréspontokkal (kezdőknek)
Az élethosszig tartó tanuláshoz hozzátartozik a hibázás. A programozásban ezeket a bosszantó dolgokat 🐞-nek (bugoknak) nevezik. Az alapos és hatékony hibakeresés jobb programozóvá tesz, és végül lehetővé teszi, hogy hosszú távon kiváló kódot írjak.
Úgy gondoltam, jó ötlet lenne egy kis kutatást végezni az Xcode-on belüli kezdő szintű hibakeresésről, és arról, hogyan ismerkedjek meg a Töréspont hibakereső eszközzel és annak néhány képességével.
Szóval, mi az a töréspont?
A töréspont egy olyan hibakeresési eszköz, amely lehetővé teszi, hogy egy bizonyos pillanatig szüneteltesse a program végrehajtását.
Miért használjak töréspontot?
A kódjában “szüneteltetési” pontok létrehozása segíthet megvizsgálni a kódját, hogy lássa, hol fordulnak elő hibák.
Hogyan hozhatok létre töréspontokat?
Egyszerű. Döntse el, hogy hol szeretné megállítani a kódja végrehajtását, és kattintson a bal oldali ereszben egy kék töréspont létrehozásához.
Nézzük meg azt a mesésséget, amit hibakeresési területnek nevezünk.”
Mi történik a fenti képernyőképen?
Elkészítettem egy findSumOfEvens() függvényt, amely összead két egész számot, ha mindkettő páros. Megszakítási pontot állítottam a 25. sorban, miután a 24. sorban meghívtam a findSumOfEvens(n1: 2, n2: 4) függvényt. A függvény a 25. sorban szünetelt, ami azt jelenti, hogy a findSumOfEvens(n1: 1, n2: 6) második hívását még nem hívta meg.
Megjegyeztem néhány hasznos Xcode hibakeresési gombot / területet is. Megjegyzés:
- Continue / Pause = (a billentyűzet rövidítése ⌃ + ⌘ + Y)
És ezek a végrehajtásvezérlő gombok:
- Step Over = (a billentyűparancs F6)
- Step Into = (a billentyűparancs F7)
- Step Out = (a billentyűparancs F8)
Futtattam a projektet, és a konzol kiírta: “The sum of your even numbers is 6″.”
A következőkben a “Step Over” gombra kattintottam a következő kódsor (25. sor) végrehajtásához – ahová a töréspontot helyeztem.
Fentebb látható, hogy “átlépve” a következő kódsort ténylegesen KI is VÉGZEM, és most a konzolom kiírta: “Both of your numbers need to be even. Try again.”
Hogyan szabadulhatok meg a törésponttól?
Jobb klikk a töréspontra a törléshez:
Várj, mi ez az (lldb) üzenet a konzolodban?
Az LDB az “alacsony szintű hibakereső” rövidítése, amely az iOS-alkalmazások fejlesztéséhez szükséges alapvető hibakeresési környezetet biztosítja. Segítségével megtalálhatók és kiküszöbölhetők a problémák a Swift és Objective-C kódodban.
Hogyan kapcsolódnak a töréspontok és az LLDB?
Az LLDB-be beírhatsz gyorsparancsokat, amelyek segítségével töréspontokat állíthatsz be bizonyos kódsoroknál, töréspontokat állíthatsz be a kód több pontján, listázhatod az összes töréspontodat, és letilthatod a töréspontokat.
Fentebb látható, hogy az LLDB-ben egy “selector” (módszer neve) megadásával több töréspontot is beállíthat. Ez különösen akkor hasznos, ha sok fájlja van, és nem akar mindegyikben kattintani a töréspontok beállításához.
Fentebb az összes töréspontot is “listázhatja” a projektjében.
Fentebb láthatjuk a konzolra kiírt részletes lista információt, amely tartalmazza a “hit count”-ot, ami azt mutatja, hogy hányszor értünk el egy adott töréspontot.
Fentebb a “disable”-t használom az összes töréspontom letiltására. Ha csak a 2. töréspontomat akartam volna letiltani, akkor a “breakpoint disable 2.”
Fentebb egy töréspontot állítottam be egy adott helyen a kódomban: a ViewController.swift fájlom 16. sorában.
Az általam használt LLDB töréspont parancsok a következők voltak:
- breakpoint set
- breakpoint list
- breakpoint disable
Ha a projektem összeomlik, nem kellene csak a stop gombra kattintanom és befejezni az alkalmazás végrehajtását?
Az általam kutatottak alapján az alkalmazás leállítása (◾) ️megszabadít az értékes hibakeresési információktól, amelyeket az Xcode megpróbál átadni nekünk (a fejlesztőnek), hogy segítsen nekünk a probléma megoldásában. Elkezdem használni a töréspontokat és a végrehajtásvezérlő gombokat, hogy jobban végiglépkedjek a kódomon, hogy lássam, hol fordulnak elő a hibák.
Fogadd el a hibákat, mint lehetőséget a tanuláshoz.
A hibák legyenek mindig a kedvedre.