Professioneel debuggen en diagnostiek van mobiele applicaties is een belangrijke vaardigheid voor mobiele ontwikkeling, waarmee fouten in code kunnen worden gevonden en opgelost. Volgens JetBrains Developer Ecosystem (2024) besteden ontwikkelaars tot 30% van hun werktijd aan het debuggen van code. IT Sectr heeft eigen diagnostische praktijken ontwikkeld die de tijd voor het vinden van bugs met 40% verkorten door correct gebruik van debuggingtools.
Belangrijkste punten
Mobiele applicaties worden gebouwd in twee hoofdconfiguraties: Debug en Release. Debug-build bevat debugsymbolen, optimaliseert code niet en gebruikt een tijdelijke handtekening — dit maakt het mogelijk om breakpoints in te stellen, variabelen te inspecteren en code stap voor stap uit te voeren.
Release-build voor mobiele ontwikkeling is de definitieve versie voor App Store en Google Play. Release optimaliseert code, verwijdert onnodige symbolen en logs en ondertekent de app met een productiecertificaat. Debuggen op Release is onmogelijk — als een bug alleen op Release reproduceert, zijn Crashlytics of andere crashreporters nodig.
De juiste strategie voor mobiele apps: Debug voor ontwikkeling, Release voor testen voor publicatie. IT Sectr raadt aan om de Release-build 2-3 dagen voor de release op testapparaten uit te voeren om problemen te identificeren die niet in Debug-modus verschijnen (bijv. codeverduistering of ProGuard/R8-fouten).
Debuggable=false is een verplichte instelling voor Release in AndroidManifest. iOS Debug en Release verschillen per build-schema in Xcode — Debug bevat Debug executable, Release niet. iOS heeft ook een TestFlight-configuratie (met crashrapporten) en App Store.
Android Studio biedt een complete set tools voor het debuggen en diagnosticeren van mobiele applicaties op het Android-platform. Logcat is de Android-systeemlogconsole, de primaire tool voor het bekijken van logs, filterbaar op niveau (Verbose, Debug, Info, Warn, Error), proces en tag.
Logcat toont logs van alle processen op het apparaat of de emulator. Elke log heeft een prioriteitsniveau, tag en bericht — gebruik Log.d(TAG, message) voor debugberichten, Log.e voor fouten. Filteren op tag is de beste manier om uw logs te vinden tussen duizenden systeemberichten.
Voorbeeld van loguitvoer in mobiele ontwikkeling op Android:
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 — visuele UI-debugger voor Android, toont de View-hiërarchie, attributen van elk element en zijn positie op het scherm. Maakt het mogelijk om lay-outparameters, padding, margin, zichtbaarheid en tekstgroottes te controleren op een draaiende app.
Database Inspector — SQLite-databases direct in Android Studio bekijken en bewerken, toont inhoud van alle tabellen, maakt het mogelijk om SQL-query's uit te voeren en gegevens in realtime te wijzigen — een onmisbare tool voor het debuggen van Room-query's en ContentProvider.
Network Inspector — volgt alle HTTP-verzoeken van de app, toont URL, headers, verzoek- en antwoordbody, uitvoeringstijd en statuscode. Helpt bij het debuggen van REST API, het verifiëren van serialisatiecorrectheid en het detecteren van trage verzoeken.
Uitgebreid debuggen en diagnostiek van mobiele applicaties op Android vereist vaardigheid met alle genoemde tools. Android Studio combineert ze in één IDE voor hogere efficiëntie.
Xcode biedt een vergelijkbare set tools voor het debuggen en diagnosticeren van mobiele applicaties op iOS. Console is het iOS-equivalent van Logcat, toont systeem- en app-logs gegroepeerd per categorie en niveau (OSLogType).
Memory Graph Debugger is een visuele tool voor het detecteren van retain cycles en geheugenlekken, toont een grafiek van alle objecten in het geheugen met hun verwijzingen. Rode knooppunten geven lekken aan — objecten die hadden moeten worden vrijgemaakt maar nog in het geheugen zijn.
Gebruik van Memory Graph: start de app, klik op de knop Debug Memory Graph in Xcode, selecteer een object en inspecteer de binnenkomende verwijzingen. Een retain cycle verschijnt als een cirkelvormige afhankelijkheid: object A houdt object B vast, object B houdt object A vast. De oplossing is het gebruik van weak of unowned verwijzingen in closures.
View Hierarchy Debugger is het iOS-equivalent van Layout Inspector, toont een 3D-visualisatie van alle UIView op het scherm met hun hiërarchie, beperkingen en attributen. Maakt het mogelijk om elk element te selecteren en de positie, kleur, grootte en lay-outbeperkingen te zien.
Heap Dump is een momentopname van het volledige app-geheugen, waarvan de analyse helpt bij het vinden van objecten die niet worden vrijgemaakt en het schatten van het totale geheugengebruik van elke klasse. In Xcode is Heap Dump beschikbaar via Memory Report in Debug Navigator.
LLDB is een low-level debugger voor C-, Objective-C- en Swift-apps, die breakpoints, watchpoints, assembly-dump en dynamische variabelewijziging ondersteunt. Het commando po (print object) in LLDB geeft een beschrijving van elk object in het geheugen.
Watchpoint is een breekpunt dat wordt geactiveerd wanneer de waarde van een variabele verandert, handig om te volgen wie en wanneer de waarde van een objectveld wijzigt. In tegenstelling tot een breakpoint, dat wordt geactiveerd op een specifieke regel, wordt een watchpoint geactiveerd bij elke geheugenwijziging.
Professioneel debuggen en diagnostiek op iOS vereist ervaring met Xcode en begrip van geheugenbeheer. Apple biedt volledige documentatie voor elke debuggingtool.
Proxy-tools zijn essentieel voor het diagnosticeren van netwerkproblemen in mobiele applicaties. Charles Proxy is de populairste HTTP-proxy voor mobiele ontwikkeling, waarmee verzoeken tussen de app en server kunnen worden onderschept, bekeken en gewijzigd.
Charles Proxy fungeert als tussenpersoon: u configureert het apparaat om Charles als proxy te gebruiken (meestal het IP van de computer, poort 8888). Charles toont alle HTTP- en HTTPS-verzoeken met de mogelijkheid om headers, body, cookies en uitvoeringstijd te bekijken. SSL Proxying maakt het mogelijk om HTTPS-verkeer te ontsleutelen voor analyse.
Charles-functies: Breakpoints (verzoek pauzeren voor bewerking), Rewrite (automatische verzoekwijziging), Map Local (antwoord vervangen door lokaal bestand). Map Local is onmisbaar voor testen zonder echte API — u retourneert een voorbereide JSON in plaats van een serverantwoord.
Proxyman is een modern alternatief voor Charles voor macOS met een schonere interface, betere ondersteuning voor M1 en M2 en privacybescherming. Ondersteunt dezelfde functies: onderschepping, SSL-proxy, verzoekbewerking en scripts voor automatische verkeerswijziging.
Wireshark is een professionele verkeersanalysator voor diepgaande netwerkdiagnostiek, analyseert alle OSI-lagen: TCP, DNS, TLS-handshake, ICMP. Wordt gebruikt voor het diagnosticeren van trage verbindingen, DNS-problemen en low-level netwerkfouten.
Stetho is een bibliotheek van Facebook voor het debuggen van Android-apps via de Chrome-browser, waarmee databases, netwerkverzoeken, View Hierarchy en Shared Preferences via Chrome DevTools kunnen worden bekeken. Flipper is de opvolger van Stetho met iOS-ondersteuning en een plug-inarchitectuur.
API-clients worden gebruikt voor het debuggen en diagnosticeren van de backend van mobiele applicaties zonder de app zelf te starten. Postman is de populairste API-client met collecties, tests en automatisering, waarmee GET-, POST-, PUT-, DELETE-verzoeken kunnen worden verzonden en headers, cookies en omgevingsvariabelen kunnen worden beheerd.
Insomnia is een lichtgewicht open-source alternatief voor Postman met een snellere interface, ingebouwde GraphQL-ondersteuning en betere collectieorganisatie. Ondersteunt plug-ins: thema's, export, codegeneratie in verschillende talen.
Httpie is een commandoregel HTTP-client met leesbare uitvoer, die gekleurde JSON-antwoorden, headers en status direct in de terminal weergeeft. Geschikt voor snelle API-controles zonder een GUI-applicatie te openen.
Voorbeeld van Httpie-gebruik:
http POST https://api.example.com/v1/users \
"Authorization: Bearer token123" \
name="John" email="john@example.com"
IT Sectr raadt de combinatie aan: Postman voor API-analyse en documentatie + Httpie voor snelle controles. Importeer een Postman-collectie uit Swagger- of OpenAPI-specificatie — dit garandeert dat de geteste endpoints overeenkomen met de serverdocumentatie.
| Tool | Platform | Debugtype | Gratis | Beste gebruik |
|---|---|---|---|---|
| Logcat | Android | Loggen | + | App- en systeemlogs bekijken |
| Layout Inspector | Android | UI/View | + | View-hiërarchie en attributen controleren |
| Memory Graph | iOS | Geheugen | + | Geheugenlekdiagnose |
| View Hierarchy | iOS | UI/View | + | 3D UIView-visualisatie |
| Charles Proxy | iOS/Android | Netwerk | 30 dagen proef | HTTP/HTTPS-verkeer onderscheppen |
| Proxyman | iOS/Android | Netwerk | + (beperkt) | Moderne HTTP-proxy voor macOS |
| Wireshark | Alle platforms | Netwerk (diep) | + | Analyse van alle OSI-lagen |
| Postman | Alle platforms | API | + | REST/GraphQL API-testen |
| Insomnia | Alle platforms | API | + | Postman-alternatief met GraphQL |
| LLDB | iOS/macOS | Laag niveau | + | Stap voor stap debuggen, assembly |
Veelgestelde vragen
Debug-build bevat debugsymbolen, optimaliseert code niet en gebruikt een tijdelijke handtekening. Release-build optimaliseert code, verwijdert logs, verduistert en ondertekent met een productiecertificaat. Debug wordt geïnstalleerd via USB of emulator, Release — via App Store of Google Play.
Gebruik Memory Profiler in Android Studio — het toont toegewezen en vrijgemaakte objecten en GC-gebeurtenissen. Maak een Heap Dump en analyseer objecten die niet worden vrijgemaakt. Zoek naar Activity- en Fragment-instanties die na finish() in het geheugen blijven. Gebruik LeakCanary — de bibliotheek detecteert automatisch lekken.
Op de computer: schakel SSL Proxying in in Charles (Proxy → SSL Proxying Settings). Op het apparaat: installeer het Charles CA-certificaat (chls.pro/ssl) en vertrouw het in de instellingen. Op iOS 13+ schakelt u certificaatvertrouwen in via General → About → Certificate Trust Settings. Op Android 7+ is een network_security_config.xml-configuratie vereist.
Een breakpoint stopt de uitvoering op een specifieke coderegel. Een watchpoint stopt de uitvoering wanneer de waarde van een variabele verandert. Een breakpoint wordt elke keer geactiveerd wanneer de regel wordt bereikt, een watchpoint wordt geactiveerd bij elke wijziging van het gevolgde geheugen. Watchpoints zijn handig voor het vinden van onverwachte veldwijzigingen.
Gebruik Apollo DevTools (browserextensie) of Insomnia met GraphQL-ondersteuning. Charles en Proxyman onderscheppen GraphQL-verzoeken als gewone HTTP POST — u kunt query's, variabelen en antwoorden bekijken. Voor gedetailleerd debuggen — Apollo Client Developer Tools.
Samenvatting
We ontwikkelen een mobiele applicatie turnkey
IT Sectr creëert sinds 2017 iOS- en Android-applicaties voor startups en bedrijven. We adviseren u en stellen de beste oplossing voor.