Come Smettere di Torturare Xcode e Iniziare a Vivere con DebugSwift
Ti suona familiare: stai testando un'app su un dispositivo fisico lontano dalla scrivania, e improvvisamente — un bug. Oppure una richiesta di rete restituisce 500, ma non riesci a vedere il body dell'errore. Devi tornare al tuo computer, collegare il cavo, lanciare Xcode e cercare di riprodurre il problema. E se è un bug intermittente? In momenti come questi, vorresti avere una console sviluppatore proprio in tasca.
Oggi analizzeremo DebugSwift — un potente toolkit che trasforma la tua app iOS in un vero e proprio laboratorio di debug. Non è solo "un altro logger", ma uno strumento completo che ti dà accesso alle richieste di rete, alla gerarchia delle view e persino al database direttamente all'interno dell'app in esecuzione.

Cos'è DebugSwift e Perché Ti Serve
DebugSwift è una libreria open-source per sviluppatori Swift che incorpora un menu di debug nascosto nella tua app. Pensa a Chrome DevTools, ma per iOS. Il progetto ha preso le migliori idee da strumenti come CocoaDebug e DBDebugToolkit, ma con un focus su Swift 6 moderno e supporto nativo per Apple Silicon.
Il punto principale qui è l'autonomia. Puoi dare una build a un tester o a un cliente, e se qualcosa va storto, possono controllare i log, ispezionare il traffico di rete o persino fare uno screenshot della gerarchia dello schermo da soli, senza il tuo aiuto.
Cinque Motivi per Aggiungere DebugSwift al Tuo Progetto
1. Network Inspector Potenziato
Il monitoraggio del traffico è la base. DebugSwift intercetta tutte le richieste e risposte HTTP, formatta magnificamente il JSON ed evidenzia la sintassi. Ma ci sono anche "funzionalità killer":
- WebSocket Inspector: Traccia automaticamente i frame senza configurazione extra.
- Decrittazione in Tempo Reale: Se il tuo backend invia dati crittografati (AES-256/128), puoi registrare una chiave in DebugSwift e l'inspector ti mostrerà il testo in chiaro.
- Filtri: Puoi nascondere le richieste di analytics per non ingombrare il log.

2. Audit Visivo dell'Interfaccia
A volte hai bisogno di capire perché una view si è spostata di un paio di pixel. DebugSwift ha un inspector della gerarchia 3D integrato (simile a quello in Xcode, ma che funziona direttamente nell'app).
- Overlay a Griglia: Sovrappone una griglia per verificare l'allineamento.
- Animazioni Slow: Rallenta le animazioni per esaminare ogni fotogramma di transizione.
- Render Tracking SwiftUI: Una funzionalità sperimentale che evidenzia i componenti SwiftUI che vengono re-renderizzati. Questo è prezioso per l'ottimizzazione delle performance.

3. Caccia ai Memory Leak
Un [weak self] dimenticato in una closure — un classico. DebugSwift monitora retain cycle e dealloc in tempo reale. Se un oggetto avrebbe dovuto essere rimosso dalla memoria ma è rimasto lì, lo strumento lancia un allarme. C'è anche un widget di performance che mostra FPS, carico CPU e utilizzo della memoria sovrapposti alla tua interfaccia.
4. Accesso alle Internals dell'App
Niente più bisogno di scrivere print(). Nella sezione Resources, puoi:
- Visualizzare e modificare UserDefaults e Keychain.
- Esplorare i file in Sandbox e App Groups.
- Ispezionare database SQLite e Realm.
- Copiare il token APNS con un solo pulsante (quanto tempo abbiamo risparmiato su questo!).
5. Azioni Personalizzate
Questa è la mia parte preferita. Puoi aggiungere i tuoi pulsanti personalizzati al menu di debug. Ad esempio: "Cancella Cache", "Cambia Server in Dev/Stage" o "Riempi Carrello con Prodotti Test".

Come Funziona Sotto il Cofano
Il progetto è scritto in Swift e richiede iOS 14+. È interessante notare che gli sviluppatori hanno prestato molta attenzione al supporto per Apple Silicon. Se hai mai lottato con errori di architettura nel simulatore Xcode su chip M1/M2, puoi dimenticartene qui — la libreria viene distribuita come un vero e proprio XCFramework.
Per intercettare il traffico di rete, utilizza il logging di URLSession. Se crei configurazioni di sessione in anticipo, DebugSwift offre comodi metodi per iniettare il tuo protocollo personalizzato:
Casi d'Uso Pratici
Caso #1: Test Remoto. Invi una build TestFlight a un tester. Trova un bug nella logica degli sconti. Invece di chiedere i log attraverso la console del Mac, il tester semplicemente scuote il telefono (Shake to Toggle), apre DebugSwift, va al log di rete e ti invia uno screenshot della risposta JSON dal server.
Caso #2: Debug delle Push. Devi testare come l'app gestisce un payload di notifica push specifico. DebugSwift ha un simulatore di push: basta incollare il JSON e l'app lo elabora come se provenisse da Apple.
Come Iniziare
L'installazione è semplice tramite Swift Package Manager o CocoaPods. In AppDelegate o nell'entry point SwiftUI App, bastano un paio di righe:
Suggerimento: avvolgi sempre la chiamata in #if DEBUG per assicurarti che gli strumenti di debug non finiscano accidentalmente nell'App Store.
Verdetto: Vale la Pena Provarlo?
Se sei stanco di infinite ricompilazioni e ricostruzioni del progetto solo per controllare un valore nel database o negli header delle richieste — assolutamente sì. DebugSwift fa risparmiare ore di tempo, specialmente durante lo sviluppo attivo e l'integrazione delle API.
Il progetto è sviluppato attivamente, la community è viva e il supporto per Swift 6 suggerisce che lo strumento rimarrà rilevante a lungo.
Prova il progetto qui: https://github.com/DebugSwift/DebugSwift
Quali strumenti di debug usi? Condividi nei commenti!
Progetti correlati