Otklanjanje grešaka i dijagnostika u mobilnom razvoju: šta je to, koji alati i kako funkcioniše

Аутор: IT Sectr Објављено: 2026-04-27 Време читања: 11 мин

Profesionalno otklanjanje grešaka i dijagnostika mobilnih aplikacija je ključna veština za mobilni razvoj, koja omogućava pronalaženje i ispravljanje grešaka u kodu. Prema JetBrains Developer Ecosystem (2024), programeri provode do 30% radnog vremena na otklanjanje grešaka u kodu. IT Sectr je razvio sopstvene dijagnostičke prakse koje smanjuju vreme traženja bagova za 40% pravilnom upotrebom alata za otklanjanje grešaka.

Glavno

  • Debug i Release — dva režima izgradnje mobilnih aplikacija: Debug sa simbolima za otklanjanje grešaka i Release sa optimizacijom za objavljivanje.
  • Logcat i Console — osnovni alati za pregled logova i dijagnostiku aplikacija na Android i iOS.
  • Memory Graph — vizuelni alat Xcode za otkrivanje curenja memorije i retain cycles u iOS aplikacijama.
  • Charles Proxy — HTTP proxy za otklanjanje grešaka i dijagnostiku mrežnog saobraćaja između mobilne aplikacije i servera.
  • Postman i Insomnia — API klijenti za testiranje REST i GraphQL zahteva bekenda bez pokretanja aplikacije.

Režimi otklanjanja grešaka za mobilni razvoj: Debug vs Release

Mobilne aplikacije se grade u dve glavne konfiguracije: Debug i Release. Debug izgradnja uključuje simbole za otklanjanje grešaka, ne optimizuje kod i koristi privremeni potpis — ovo omogućava postavljanje breakpoint-ova, pregledanje promenljivih i izvršavanje koda korak po korak.

Release izgradnja za mobilni razvoj je konačna verzija za App Store i Google Play. Release optimizuje kod, uklanja nepotrebne simbole i logove i potpisuje aplikaciju produkcijskim sertifikatom. Otklanjanje grešaka na Release je nemoguće — ako se bag reprodukuje samo na Release, potrebni su Crashlytics ili drugi izveštači o padovima.

Ispravna strategija za mobilne aplikacije: Debug za razvoj, Release za testiranje pre objavljivanja. IT Sectr preporučuje pokretanje Release izgradnje na test uređajima 2-3 dana pre izdanja kako bi se identifikovali problemi koji se ne pojavljuju u Debug režimu (na primer, obfuskacija koda ili ProGuard/R8 greške).

Debuggable=false je obavezna postavka za Release u AndroidManifest. iOS Debug i Release se razlikuju po šemi izgradnje u Xcode — Debug uključuje Debug executable, Release ne. iOS takođe ima konfiguraciju TestFlight (sa izveštajima o padovima) i App Store.

Android alati: Logcat, Layout Inspector, Database Inspector

Android Studio pruža kompletan set alata za otklanjanje grešaka i dijagnostiku mobilnih aplikacija na Android platformi. Logcat je konzola sistemskih logova Android, glavni alat za pregled logova, filtrira se po nivou (Verbose, Debug, Info, Warn, Error), procesu i oznaci.

Logcat — osnove

Logcat prikazuje logove svih procesa na uređaju ili emulatoru. Svaki log ima nivo prioriteta, oznaku i poruku — koristite Log.d(TAG, message) za poruke o otklanjanju grešaka, Log.e za greške. Filtriranje po oznaci je najbolji način da pronađete svoje logove među hiljadama sistemskih poruka.

Primer izlaza loga u mobilnom razvoju na Android:

java
private static final String TAG = "MainActivity";

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    Log.d(TAG, "onCreate started");
    try {
        initComponents();
        Log.i(TAG, "Components initialized successfully");
    } catch (Exception e) {
        Log.e(TAG, "Failed to init components", e);
    }
}

Layout Inspector — vizuelni dbager UI za Android, prikazuje hijerarhiju View, atribute svakog elementa i njegovu poziciju na ekranu. Omogućava proveru layout parametara, padding-a, margina, vidljivosti i veličine teksta na radnoj aplikaciji.

Database Inspector — pregled i uređivanje SQLite baza podataka direktno u Android Studio, prikazuje sadržaj svih tabela, omogućava izvršavanje SQL upita i menjanje podataka u realnom vremenu — nezamenljiv alat za otklanjanje grešaka Room upita i ContentProvider.

Network Inspector — prati sve HTTP zahteve aplikacije, prikazujući URL, zaglavlja, telo zahteva i odgovora, vreme izvršavanja i statusni kod. Pomaže u otklanjanju grešaka REST API, proveri ispravnosti serijalizacije i otkrivanju sporih zahteva.

Sveobuhvatno otklanjanje grešaka i dijagnostika mobilnih aplikacija na Android zahteva poznavanje svih navedenih alata. Android Studio ih kombinuje u jednom IDE za veću efikasnost.

iOS alati: Console, Memory Graph, View Hierarchy

Xcode pruža sličan set alata za otklanjanje grešaka i dijagnostiku mobilnih aplikacija na iOS. Console je pandan Logcat za iOS, prikazuje logove sistema i aplikacije grupisane po kategoriji i nivou (OSLogType).

Memory Graph — dijagnostika curenja memorije

Memory Graph Debugger je vizuelni alat za otkrivanje retain cycles i curenja memorije, prikazuje graf svih objekata u memoriji sa njihovim referencama. Crveni čvorovi ukazuju na curenja — objekte koji su trebali biti oslobođeni ali su još u memoriji.

Korišćenje Memory Graph: pokrenite aplikaciju, kliknite na dugme Debug Memory Graph u Xcode, izaberite objekat i pregledajte njegove dolazne reference. Retain cycle izgleda kao kružna zavisnost: objekat A drži objekat B, objekat B drži objekat A. Rešenje je korišćenje weak ili unowned referenci u zatvaranjima.

View Hierarchy Debugger je pandan Layout Inspector za iOS, prikazuje 3D vizuelizaciju svih UIView na ekranu sa njihovom hijerarhijom, ograničenjima i atributima. Omogućava odabir bilo kog elementa i prikaz njegove pozicije, boje, veličine i layout ograničenja.

Heap Dump je snimak cele memorije aplikacije, čija analiza pomaže u pronalaženju objekata koji se ne oslobađaju i proceni ukupne upotrebe memorije svake klase. U Xcode, Heap Dump je dostupan putem Memory Report u Debug Navigator.

LLDB je niskonivojski dbager za aplikacije u C, Objective-C i Swift, koji podržava breakpoint-ove, watchpoint-ove, asemblerski dump i dinamičku promenu promenljivih. Komanda po (print object) u LLDB prikazuje opis bilo kog objekta u memoriji.

Watchpoint je tačka zaustavljanja koja se aktivira kada se promeni vrednost promenljive, korisna za praćenje ko i kada menja vrednost polja objekta. Za razliku od breakpoint-a, koji se aktivira na određenoj liniji, watchpoint se aktivira na bilo koju promenu memorije.

Profesionalno otklanjanje grešaka i dijagnostika na iOS zahteva iskustvo sa Xcode i razumevanje upravljanja memorijom. Apple pruža potpunu dokumentaciju za svaki alat za otklanjanje grešaka.

Mrežni dbageri: Charles Proxy, Proxyman, Wireshark

Proxy alati su obavezni deo dijagnostike mrežnih problema mobilnih aplikacija. Charles Proxy je najpopularniji HTTP proxy za mobilni razvoj, koji omogućava presretanje, pregledanje i modifikovanje zahteva između aplikacije i servera.

Charles Proxy — presretanje saobraćaja

Charles Proxy radi kao posrednik: konfigurišete uređaj da koristi Charles kao proxy (obično IP računara, port 8888). Charles prikazuje sve HTTP i HTTPS zahteve sa mogućnošću pregleda zaglavlja, tela, kolačića i vremena izvršavanja. SSL Proxy omogućava dešifrovanje HTTPS saobraćaja za analizu.

Mogućnosti Charles: Breakpoints (zaustavljanje zahteva za uređivanje), Rewrite (automatska izmena zahteva), Map Local (zamena odgovora lokalnim fajlom). Map Local je nezamenljiv za testiranje bez realnog API — vraćate unapred pripremljen JSON umesto odgovora servera.

Proxyman je moderna alternativa Charles za macOS sa čistijim interfejsom, boljom podrškom za M1 i M2 i zaštitom privatnosti. Podržava iste funkcije: presretanje, SSL proxy, uređivanje zahteva i skripte za automatsku modifikaciju saobraćaja.

Wireshark je profesionalni analizator saobraćaja za dubinsku dijagnostiku mreže, analizira sve OSI slojeve: TCP, DNS, TLS rukovanje, ICMP. Koristi se za dijagnostiku sporih veza, DNS problema i niskonivojskih mrežnih grešaka.

Stetho je biblioteka od Facebook za otklanjanje grešaka Android aplikacija kroz Chrome pretraživač, omogućava pregled baze podataka, mrežnih zahteva, View Hierarchy i Shared Preferences putem Chrome DevTools. Flipper je naslednik Stetho sa podrškom za iOS i arhitekturom dodataka.

API alati: Postman, Insomnia

API klijenti se koriste za otklanjanje grešaka i dijagnostiku bekenda mobilnih aplikacija bez pokretanja same aplikacije. Postman je najpopularniji API klijent sa kolekcijama, testovima i automatizacijom, koji omogućava slanje GET, POST, PUT, DELETE zahteva i upravljanje zaglavljima, kolačićima i promenljivama okruženja.

Insomnia je lagana open-source alternativa Postman sa bržim interfejsom, ugrađenom podrškom za GraphQL i boljom organizacijom kolekcija. Podržava dodatke: teme, izvoz, generisanje koda na različitim jezicima.

Httpie je konzolni HTTP klijent sa čitljivim izlazom, prikazuje obojeni JSON odgovor, zaglavlja i status direktno u terminalu. Pogodan za brze provere API bez otvaranja GUI aplikacije.

Primer korišćenja Httpie:

bash
http POST https://api.example.com/v1/users \
    "Authorization: Bearer token123" \
    name="John" email="john@example.com"

IT Sectr preporučuje kombinaciju: Postman za analizu i dokumentaciju API + Httpie za brze provere. Uvezite Postman kolekciju iz Swagger ili OpenAPI specifikacije — ovo garantuje da testirani endpoint-ovi odgovaraju serverskoj dokumentaciji.

Alat Platforma Tip otklanjanja grešaka Besplatan Najbolja primena
Logcat Android Logovanje + Pregled logova aplikacije i sistema
Layout Inspector Android UI/View + Provera hijerarhije View i atributa
Memory Graph iOS Memorija + Dijagnostika curenja memorije
View Hierarchy iOS UI/View + 3D vizuelizacija UIView
Charles Proxy iOS/Android Mreža 30 dana proba Presretanje HTTP/HTTPS saobraćaja
Proxyman iOS/Android Mreža + (ograničen) Moderni HTTP proxy za macOS
Wireshark Sve platforme Mreža (dubinski) + Analiza svih OSI slojeva
Postman Sve platforme API + Testiranje REST/GraphQL API
Insomnia Sve platforme API + Alternativa Postman sa GraphQL
LLDB iOS/macOS Niski nivo + Koračno otklanjanje grešaka, asembler

Često postavljana pitanja

Kako se Debug razlikuje od Release u mobilnom razvoju?

Debug izgradnja sadrži simbole za otklanjanje grešaka, ne optimizuje kod i koristi privremeni potpis. Release izgradnja optimizuje kod, uklanja logove, obfuscira i potpisuje produkcijskim sertifikatom. Debug se instalira preko USB ili emulatora, Release — preko App Store ili Google Play.

Kako pronaći curenje memorije na Android?

Koristite Memory Profiler u Android Studio — prikazuje dodeljene i oslobođene objekte i GC događaje. Uradite Heap Dump i analizirajte objekte koji se ne oslobađaju. Tražite Activity i Fragment instance koje ostaju u memoriji nakon finish(). Koristite LeakCanary — biblioteka automatski otkriva curenja.

Kako dešifrovati HTTPS saobraćaj kroz Charles Proxy?

Na računaru: uključite SSL Proxying u Charles (Proxy → SSL Proxying Settings). Na uređaju: instalirajte Charles CA sertifikat (chls.pro/ssl) i verujte mu u podešavanjima. Na iOS 13+ uključite poverenje sertifikatu u General → About → Certificate Trust Settings. Na Android 7+ je potrebna konfiguracija network_security_config.xml.

Šta su Breakpoint i Watchpoint?

Breakpoint zaustavlja izvršavanje na određenoj liniji koda. Watchpoint zaustavlja izvršavanje kada se promeni vrednost promenljive. Breakpoint se aktivira svaki put kada se dođe do linije, watchpoint se aktivira pri bilo kojoj promeni praćene memorije. Watchpoint je koristan za pronalaženje neočekivanih promena polja.

Kako otklanjati greške u GraphQL zahtevima?

Koristite Apollo DevTools (proširenje pregledača) ili Insomnia sa podrškom za GraphQL. Charles i Proxyman presreću GraphQL zahteve kao obične HTTP POST — možete pregledati upite, promenljive i odgovore. Za detaljno otklanjanje grešaka — Apollo Client Developer Tools.

Sažetak

  • Debug i Release — različite konfiguracije izgradnje za razvoj i objavljivanje mobilnih aplikacija
  • Logcat i Console — osnovni alati za pregled logova na Android i iOS
  • Memory Graph i Heap Dump — vizuelni alati za dijagnostiku curenja memorije
  • Layout Inspector i View Hierarchy — otklanjanje grešaka UI kroz hijerarhiju i atribute elemenata
  • Charles Proxy i Wireshark — presretanje saobraćaja i analiza mreže na svim OSI slojevima
  • Postman i Insomnia — testiranje REST i GraphQL API bez pokretanja aplikacije
  • LLDB i Watchpoint — niskonivojsko otklanjanje grešaka sa praćenjem promena memorije

Развићемо мобилну апликацију под кључ

IT Sectr креира iOS и Android апликације за стартапе и предузећа од 2017. године. Саветоваћемо вас и предложити најбоље решење.

Разговарајте о пројекту