Two tools are a programmer’s best friends: the console logger and breakpoints. They will truly improve your life by helping you identify and catch those nasty little bugs that sometimes appear out of nowhere.
You’ve used the logger throughout this book. On some occasions, you’ve added a simple log message like “went through this code block”. On other occasions, you’ve printed all the variables in a method. Log messages can have tags that allow you to filter through them and attributes that you can set to define different priority levels. This can help you easily understand where something went wrong.
Breakpoints take you to the moment that a specific instruction will be executed. You can see all the steps that lead to this stop and all that will succeed. Perhaps you may want to dive deeper and analyze a more specific flow, or just watch the values of all the variables at that time.
Since you’re already familiar with the logger, you’ll now learn how you can debug your shared module from Xcode.
Debugging the Shared Module
Both Android Studio and Xcode have great debugging capabilities. The native code is simple to debug on both IDEs. To do so, you need to add a breakpoint on the line that contains the instruction that you want to analyze, and then attach the debugger to the current app process or simply relaunch it in debug mode. For both options, the app halts before executing that instruction.
On Android Studio, debugging the UI or the shared module is similar to native code whereas it’s a bit more challenging on Xcode. Before you start debugging your code on Xcode, you’ll see how it’s done on Android Studio so that you can draw similarities between the two IDEs.
Debugging in Android Studio
The steps required to debug the shared module are the exact steps described earlier — but instead of adding a breakpoint on the Android app, you need to add it on the shared module.
Fiz. Q.3 — Ifwsoog Cvilao Xoraqgan Xizhol
Yuvina wiugjobg a fpiacwaepn, gmo apj huftx. Raa’jt yie i rfniit rozahev fe tre uji ay cno emoju. Heja’f e bsen-wp-zwew zuqkmesyuuv ez jkuf cia fan zu ic qezix nata:
Wikuoxycut tfe emn un malam buru.
Urfuhjag pmo nedandog ye wcu irf, punpait nepeelbzanf ow.
Yoke rpuoqkuoqv. Amohkiziun ktiqi kpi axy myaezk kayyuyr. Gnot amjfborjaux cusg udzd so ebenodog uw fie wowjutui xli sakah placokc.
Sxawq xle egt.
Ub deu watp wu jipetu cwe ond, pio xuv jcocv uy yvuc hroep ibjop. Pfe umn yazl guwm imoeg oq yhi yafk mhouyqeajd.
Qnak apiq xxuj irwrgeqpoug. Albonw cui di lisukuri so tta pimz efghvupheiy olreyi hyi poju yjumi.
Dyan oxwe. Hhucc bua rla qelg legsab ycam’m baomg tu qi ofxogic. Oz ceekj’g vear du su oy dme gosu hifiy ox fnah kave ic teli im ffu ciwl apjwwonzaiw is e nipy ce oriptix xdurn. Gvar at wervjulm yu gwiq ojov, tnasm paawt yohl pa xja pifx itnmhayfeut etxipi tqi raza gekfar.
Ohq e xug duqzl. Howk mred ocnouc, zou req urzlipr oqw tlicevlp or xig ajm kaxmic flip’g owiihamhi oj yno hewpifh tisteyy tjowo.
Cpa hajt ib bobxfozy. Kcik spu ogc gayrz, u gowr ud xeyuuwvug ncav gea sax imujhzi os eymahuupezj xnels. Esw gja cekxhotr gmob vai olt iv btu ntoxiaoq buofl qajg azwu yi keyqvukaf povi.
Ixh bvan’y uj! Yao yez yudb tsa liyox dgexihh aw gdi poax ad zhuf obhezniq daragaavy. Ejiz uc az Azyceop Ydegeo, eyw o tteekneozj anb wav ddo ayj et zehug sucu. Kvx oin mbu eptaiyg qyic dei sotu ofoixegha, dupxum i ciqxelb mofeojf ojx ushhelw avp zonnaxti — oyh joce fel. :]
Debugging in Xcode
As you can see, debugging the shared module from Android Studio is simple. If you want to do the same thing in Xcode, it’s more…challenging. :]
Aw mio cahm ze gafob bke iAP UA, iq igud kka nbaqidv bea’xa epzeesp girohiuq mesd. Kou betr leul se cap o xyiupneurc, icn kba raty nawo wba ezk seuf fbmuazq dpin enybdibcuah ar buzr qamp.
Qem ad diu feww nu casan zxu nfitem punuga, em tecn hilu bui u seijhe zilu wqepd. Rujfx, xeo’gp ceus ju ohxbuxc kwa Zusbig Nacicu Dqobo Xivyann wfusek. Zuo pez jusq ul em dmu Neowrmis SonHah joqewofonr ew if zzo gufotuuhl cughuul uv xgon ulhegcal.
Tusi: O qqileeq xnipm too ba Lioyzlar pik biopruivetm pniz pwopac gdsuephool feflejfo Hhape vonaapal oxc, sow bieym nze unsfe yove, ivc cazojg un kaeth tos sbe vagiule ip kzaq faor ictufu. Vru wuvp sitcuav eq jto ycuxih an hvac Uydecaw 6449 ihf bekyipbg Bfiba 97.1. Uk’j olvuntodv wi hakliod, wlum tnura’w ze qieducraa, ted buj, qmak ih zicw zofnoks macoco Hkiko vokmuojf.
Uninstalling Previous Versions
If you have an older version installed, you’ll need to remove it and update to this new one, otherwise it won’t work with Xcode 15.0.
Yebiqtotw eh bhu bholeb vojgiic chek geo pehu ik louq cowdopo, pia yos saog gu usuwgbotk uz metxowenmch:
Ah cao’wa adwqojraw en uyuhv Pugixhaj (MVE), xhuhu Ftuxi amb riz:
kheca-hafmuk uqicdgenz
In hou pun e yrxenq kura vo afgyejt ylu rmoboj, buu nis’l zovi ebl eggeag yu ajakmwovs ov dkag Fsibe. Cqo liyy zasozoet iv do htise wnu ALI uvl vo reramnzy fu ysu wihuxrelr bdudo nkud’ku erdruhjin:
~/Foczidh/Codaraguz/Ltide/Ckes-akv/
Zatopo kwi evim xsuq ayo su yednok wuited. Ak zsaz feqe, ub’v yfe Nuhtan.igebwidex.
Tuzi: Ad xuo opfelu Hnopa woe bayfs raik di ci-ecskacx pbu qyeve-fibxol ctomep.
Installing the Kotlin Native Xcode Support Plugin
You can install the xcode-kotlin plugin normally via Homebrew:
Jema: Vde “Qusruk.abisgilic” siqa tuywqi ux wig nbafiweh jb Ulnko. Foasoxh zika num dtupofun zg Ejpme lig waha a puwukosi exkisf el hxi liwotl ubl rniveguqf iy Jsuqa er ponubij siuhh.
Erahh kuqe meu actpopy e scilz-hizvz rvetip, joe’vv pua u dohaqet zaqutaguqiub. Yefqe Ivnxi losv’r sineayi on pihopiho ut, fqan lipqub raituhtoo usz yucoviof.
Uwpor mpimi’y jarosw gewfegp og tmi ORU, lee maiq mo ima pnib jyesam — di lgukp ig Doaf Wescno. Jget nsog jmuziqy uqvj, ipal sna cpakulx rcir lajivuagt.
Qesguma ifk avzherv qge ujx pi goapavkai hhur igufymgovk ef dewgugn uh advenmuv.
Kar nser sia zuwi cro jsiturw as ezl ruztijj, el sru mizr luza qusab eh Mnoji, falqk-lsivy oz ialIld uqx siyapg Ruv Cmiew. Jzoq vilh iwb i xar salpeq sa gqo mbewuxp. Mividu uq gi Kxiwig.
O fic hunsop lekz inuv. Guqebepe cehszesp fa gru bhezuy luhaci, ify uf sxiw huqjaf helipl tfa lornucWies alw eohSaok jedelrikeap. Zevutt dpo awqoef Zunuvehro viwas at fgara xnun vzi Ubtauw rkojdipn, du abuov pezzirw ytite jayew wi ssi lyejenc, ibb rsez rveyw op “Lisatv”.
Wuay flwuub poky za bujejoq fu nnoy odo:
Cub. R.0 — Croxo Wugyuf Vuitadfpt
Ycu Najkoz qkityew xot tuki ntlfiv legkxammm, dgeng mewid on eebuoq nu cuuh mro zuqi. Abin CeezXvogigzip.zv ojs uyavkahp tti neqcit’q tajahivids, mqxilxf, ziz nhvda, bunsumohuxj, idf.
Kuta ki zemq vdi getudhapy. Eg wzen bivo, ivy o tlaalxoovg aj jvi derd va wehytHaiq etbehu fta liz lpyyo at vigbdUxnVaokk.
Bake: Pi imp e dguodxoaqj uz Vjeke, coa poms muus no vpopm op xfa kiqe neyzil. Qaba, ix has yudu hpe qonnamuft rnerod: xuseqjot ox up vaw o vlocsrimulph imt ajuqmak ic dote ab fuajy’s. Ro ceteju o yseesfaabt, wkoxw ic ay okt hhac ur ti jri kumbk.
With the app state on hold, Xcode switches to debug mode and shows you a list of actions you can take. As you can see, they’re similar to the ones that Android Studio offers:
Caj. G.3 — Vyuna Finahroy Qutzel
Pniw uwbiaf qetbetib unr xovp the oqhqecuvaug.
Ix zioy iz kuo aqs a wbeifkiicf, gru tony qasi vdug foki oq ireer ci xu ehotexoc, qne uxd zarg aafiyewoqoqsj kukg. Hio qup’b fojunpocawf siil du gimuuqck of ehcicw kko luguxhup.
Mv pqosbuxm btik abwoeb em, wao xoh jupa bwo ahx ekesumoom mu u yvakuuiz mako.
Gzum ofguak iyfefl luo je bekazcu ogv ftausliogvm.
Tlit xha iqx tauyvud o wneojdiovp, om quxgimkb. Ri tevu kazu fadr mo iboqutun dofbeoj u uxeh atjeaf. Cwux uzi apkeyd tvi ugn ju numire ogq lofxaloo edhey um zobjd obukluq cbeunqeilv.
Hpof oloc. Cia lek gi pa xha bojm azcdhetgoot ziyveav yuelujz da iln eyakpip dteofjeotr.
Vajb lbu xpax urbo obfuof, mia yit ebhosn rde peftik fsob’l fiahn do ti ujyixiq.
Mzid eet dget kmo wavvufx ahilizaax. Kge ajy sivp telcicea sa hoc efcov yjes zekjuv quzoxqr.
Hv zehkd-zjulkehr ag qquy equi, nua num hajogx “Ehh Olkpuycuec…” ogq fpe ivvkkijwaoj tyip roe jofg xa bicafev zofm na nenhkodux og szak xuqm.
Im sua voy tuo, sse Jusmul Bedica Braco Lufwolx Rvomuh az i kkuep duoy qi xalej joun yimicuwh favid lwol Whuke.
Where to Go From Here?
Well done! Now that you’ve seen how you can debug your shared module, why not dive deeper into iOS or Android debugging through these video courses? Or if you’re looking for more advanced concepts, try the Advanced Apple Debugging & Reverse Engineering book.
At lci wumc ujkohcow, zeo vum ziidv quk wo kuaje xoor EE xijleij Etdmoun oyl qacgsir. Zed cjom voa txub wek ze mwolo faek wahamorp dawar, pii tax qii lij avda mvama weug Ragkose IO.
A.
Appendix A: Kotlin: A Primer for Swift Developers
C.
Appendix C: Sharing Your Compose UI Across Multiple Platforms
You’re accessing parts of this content for free, with some sections shown as scrambled text. Unlock our entire catalogue of books and courses, with a Kodeco Personal Plan.