>_ DevTrendsnl

Taal

Home

Talen

Secties

Frontend Backend Mobiel DevOps AI / ML GameDev Blockchain Embedded Beveiliging
Swift

Hoe Stoppen met Xcode Martelen en Gaan Leven met DebugSwift

Herkenbaar: je test een app op een fysiek apparaat ver weg van je bureau, en plotseling — een bug. Of een netwerkverzoek geeft 500 terug, maar je kunt de error body niet zien. Je moet terug naar je computer, de kabel aansluiten, Xcode starten en proberen het probleem te reproduceren. En als het een intermitterende bug is? In momenten als deze wenste je dat je een developer console in je zak had.

Vandaag lichten we DebugSwift uit — een krachtige toolkit die je iOS-app omtovert tot een volwaardig debug-lab. Het is niet zomaar "nog een logger," maar een uitgebreid hulpmiddel dat je toegang geeft tot netwerkverzoeken, view-hiërarchie en zelfs de database, rechtstreeks in de draaiende app.

Main Preview

Wat DebugSwift Is en Waarom Je Het Nodig Hebt

DebugSwift is een open-source bibliotheek voor Swift-ontwikkelaars die een verborgen debug-menu in je app inbedt. Denk aan Chrome DevTools, maar dan voor iOS. Het project nam de beste ideeën van tools zoals CocoaDebug en DBDebugToolkit, maar met focus op moderne Swift 6 en native Apple Silicon-ondersteuning.

Het belangrijkste hoogtepunt hier is autonomie. Je kunt een build aan een tester of klant geven, en als er iets misgaat, kunnen ze de logs controleren, netwerkverkeer inspecteren of zelfs een screenshot van de schermhiërarchie maken zonder jouw hulp.

Vijf Redenen om DebugSwift aan Je Project Toe te Voegen

1. Netwerk Inspector op Steroïden

Verkeersmonitoring is de basis. DebugSwift onderschept alle HTTP-verzoeken en -antwoorden, maakt JSON prachtig op en markeert syntaxis. Maar er zijn ook "killer features":

  • WebSocket Inspector: Volgt automatisch frames zonder extra configuratie.
  • On-the-fly Decryptie: Als je backend versleutelde data levert (AES-256/128), kun je een sleutel registreren in DebugSwift, en de inspector toont je de leesbare tekst.
  • Filteren: Je kunt analytics-verzoeken verbergen zodat ze de log niet vervuilen.

Network

2. Visuele Interface Audit

Soms moet je begrijpen waarom een view een paar pixels is verschoven. DebugSwift heeft een ingebouwde 3D-hiërarchie-inspector (vergelijkbaar met die in Xcode, maar werkend direct in de app).

  • Grid Overlay: Legt een raster over voor het controleren van uitlijning.
  • Trage Animaties: Vertraagt animaties om elk overgangsframe te onderzoeken.
  • SwiftUI Render Tracking: Een experimentele functie die het opnieuw renderen van SwiftUI-componenten markeert. Dit is van onschatbare waarde voor prestatieoptimalisatie.

UI Hierarchy

3. Jacht op Geheugenlekken

Een vergeten strong reference in een closure — een klassieker. DebugSwift monitort ViewControllers en Views in real time. Als een object uit het geheugen had moeten worden verwijderd maar daar is gebleven, geeft de tool een alarm. Er is ook een performance widget die FPS, CPU-belasting en geheugengebruik overlayt op je interface.

4. Toegang tot App Internals

Geen noodzaak meer om print(UserDefaults.standard.dictionaryRepresentation()) te schrijven. In de Resources sectie kun je:

  • Bekijk en bewerk UserDefaults en Keychain.
  • Blader door bestanden in Sandbox en App Groups.
  • Inspecteer SQLite en Realm databases.
  • Kopieer APNS token met één knop (hoeveel tijd hebben we hiermee bespaard!).

5. Aangepaste Acties

Dit is mijn favoriete deel. Je kunt je eigen knoppen toevoegen aan het debug-menu. Bijvoorbeeld: "Cache Wissen," "Server Wisselen naar Dev/Stage," of "Winkelwagen Vullen met Testproducten."

DebugSwift.App.shared.customAction = {
    [
        .init(title: "Инструменты разработки", actions: [
            .init(title: "Сбросить состояние") {
                // Ваша логика сброса
            }
        ])
    ]
}

Hoe Het Onder de Motorkap Werkt

Het project is geschreven in Swift en vereist iOS 14+. Interessant is dat de ontwikkelaars veel aandacht hebben besteed aan Apple Silicon-ondersteuning. Als je ooit hebt geworsteld met architectuurfouten in de Xcode-simulator op M1/M2-chips, kun je dat hier vergeten — de bibliotheek wordt geleverd als een echte XCFramework.

Voor het onderscheppen van netwerkverkeer gebruikt het URLSession logging. Als je van tevoren sessieconfiguraties maakt, biedt DebugSwift handige methoden voor het injecteren van je eigen protocol:

let config = URLSessionConfiguration.default
DebugSwift.Network.shared.injectIntoConfiguration(config)
let session = URLSession(configuration: config)

Praktische Gebruiksscenario's

Case #1: Remote Testen. Je stuurt een TestFlight-build naar een tester. Ze vinden een bug in de kortinglogica. In plaats van te vragen om logs via de Mac-console, schudt de tester gewoon met de telefoon (Shake to Toggle), opent DebugSwift, gaat naar de netwerklog en stuurt je een screenshot van de JSON-respons van de server.

Case #2: Push Debugging. Je moet testen hoe de app een specifieke push notification payload afhandelt. DebugSwift heeft een push-simulator: je plakt gewoon de JSON, en de app verwerkt het alsof het van Apple kwam.

Push

Hoe Te Beginnen

Installatie is eenvoudig via Swift Package Manager of CocoaPods. In AppDelegate duurt het maar een paar regels:

import DebugSwift

@main
class AppDelegate: UIResponder, UIApplicationDelegate {
    private let debugSwift = DebugSwift()
    
    func application(_ application: UIApplication, didFinishLaunchingWithOptions ...) -> Bool {
        #if DEBUG
        debugSwift.setup()
        debugSwift.show()
        #endif
        return true
    }
}

Tip: Wrap de aanroep altijd in #if DEBUG om te zorgen dat debug tools niet per ongeluk in de App Store terechtkomen.

Conclusie: Is Het De Moeite Waard?

Als je genoeg hebt van eindeloze print() en constante projectherbouwen om alleen maar een waarde in de database of request headers te controleren — dan is het antwoord absoluut ja. DebugSwift bespaart uren tijd, vooral tijdens actieve ontwikkeling en API-integratie.

Het project wordt actief ontwikkeld, de community leeft, en Swift 6-ondersteuning suggereert dat de tool nog lang relevant zal blijven.

Probeer het project hier: https://github.com/DebugSwift/DebugSwift

Welke debugging tools gebruik jij? Deel het in de reacties!

Gerelateerde projecten