>_ DevTrendspt

Idioma

Início

Linguagens

Seções

Frontend Backend Mobile DevOps AI / ML GameDev Blockchain Embarcados Segurança
Swift

Como Parar de Torturar o Xcode e Começar a Viver com o DebugSwift

Soa familiar: você está testando um app em um dispositivo físico longe da sua mesa, e de repente — um bug. Ou uma requisição de rede retorna 500, mas você não consegue ver o corpo do erro. Você precisa voltar ao seu computador, conectar o cabo, iniciar o Xcode e tentar reproduzir o problema. E se for um bug intermitente? Em momentos assim, você deseja ter um console de desenvolvedor bem no seu bolso.

Hoje vamos analisar o DebugSwift — um poderoso kit de ferramentas que transforma seu app iOS em um verdadeiro laboratório de depuração. Não é apenas "outro logger", mas sim uma ferramenta completa que oferece acesso a requisições de rede, hierarquia de visualizações e até mesmo ao banco de dados diretamente dentro do app em execução.

Main Preview

O Que é o DebugSwift e Por Que Você Precisa Dele

DebugSwift é uma biblioteca de código aberto para desenvolvedores Swift que嵌入式 um menu de depuração oculto no seu app. Pense no Chrome DevTools, mas para iOS. O projeto tomou as melhores ideias de ferramentas como CocoaDebug e DBDebugToolkit, mas com foco em Swift 6 moderno e suporte nativo a Apple Silicon.

O destaque principal aqui é a autonomia. Você pode entregar um build para um testador ou cliente, e se algo der errado, eles podem verificar os logs, inspecionar o tráfego de rede ou até tirar uma captura de tela da hierarquia de visualizações por conta própria, sem sua ajuda.

Cinco Motivos para Adicionar o DebugSwift ao Seu Projeto

1. Inspetor de Rede em Alta Velocidade

O monitoramento de tráfego é a base. O DebugSwift intercepta todas as requisições e respostas HTTP, formata JSON de forma bonita e destaca a sintaxe. Mas também há "recursos matadores":

  • Inspetor de WebSocket: Rastreia automaticamente frames sem configuração extra.
  • Descriptografia em Tempo Real: Se o seu backend entrega dados criptografados (AES-256/128), você pode registrar uma chave no DebugSwift, e o inspetor mostrará o texto limpo.
  • Filtragem: Você pode ocultar requisições de analytics para que não poluam o log.

Network

2. Auditoria Visual de Interface

Às vezes você precisa entender por que uma visualização deslocou por alguns pixels. O DebugSwift possui um inspetor de hierarquia 3D integrado (similar ao do Xcode, mas funcionando diretamente no app).

  • Sobreposição de Grade: Exibe uma grade para verificar alinhamento.
  • Animações Lentas: Diminui a velocidade das animações para examinar cada quadro de transição.
  • Rastreamento de Renderização SwiftUI: Um recurso experimental que destaca componentes SwiftUI que estão sendo re-renderizados. Isso é invaluable para otimização de performance.

UI Hierarchy

3. Caça aos Vazamentos de Memória

Um strong reference esquecido em um closure — um clássico. O DebugSwift monitora ViewControllers e Views em tempo real. Se um objeto deveria ter sido removido da memória, mas permaneceu lá, a ferramenta dispara um alarme. Há também um widget de performance que exibe FPS, carga de CPU e uso de memória sobrepostos à sua interface.

4. Acesso aos Internos do App

Não precisa mais escrever print(UserDefaults.standard.dictionaryRepresentation()). Na seção Resources, você pode:

  • Visualizar e editar UserDefaults e Keychain.
  • Navegar pelos arquivos no Sandbox e App Groups.
  • Inspecionar bancos de dados SQLite e Realm.
  • Copiar token APNS com um botão (quanto tempo já economizamos com isso!).

5. Ações Personalizadas

Esta é minha parte favorita. Você pode adicionar seus próprios botões ao menu de depuração. Por exemplo: "Limpar Cache", "Trocar Servidor para Dev/Stage" ou "Preencher Carrinho com Produtos de Teste".

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

Como Funciona nos Bastidores

O projeto é escrito em Swift e requer iOS 14+. Curiosamente, os desenvolvedores prestaram muita atenção ao suporte a Apple Silicon. Se você já lutou com erros de arquitetura no simulador do Xcode em chips M1/M2, pode esquecer disso aqui — a biblioteca é distribuída como um XCFramework adequado.

Para interceptar o tráfego de rede, usa URLSession logging. Se você criar configurações de sessão antecipadamente, o DebugSwift oferece métodos convenientes para injetar seu próprio protocolo:

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

Casos de Uso Práticos

Caso #1: Teste Remoto. Você envia um build do TestFlight para um testador. Ele encontra um bug na lógica de desconto. Em vez de pedir logs através do console do Mac, o testador simplesmente balança o celular (Shake to Toggle), abre o DebugSwift, vai para o log de rede e envia uma captura de tela da resposta JSON do servidor.

Caso #2: Depuração de Push. Você precisa testar como o app lida com um payload específico de notificação push. O DebugSwift tem um simulador de push: você apenas cola o JSON, e o app o processa como se viesse da Apple.

Push

Como Começar

A instalação é direta via Swift Package Manager ou CocoaPods. Em AppDelegate, leva apenas algumas linhas:

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
    }
}

Dica: Sempre envolva a chamada em #if DEBUG para garantir que as ferramentas de depuração não acabem accidentalmente na App Store.

Veredicto: Vale a Pena Experimentar?

Se você está cansado de recarregamentos constantes do print() e reconstruções de projeto só para verificar um valor no banco de dados ou nos cabeçalhos de requisição — com certeza sim. O DebugSwift economiza horas de tempo, especialmente durante desenvolvimento ativo e integração de API.

O projeto é ativamente desenvolvido, a comunidade está viva e o suporte a Swift 6 sugere que a ferramenta permanecerá relevante por muito tempo.

Experimente o projeto aqui: https://github.com/DebugSwift/DebugSwift

Quais ferramentas de depuração você usa? Compartilhe nos comentários!

Projetos relacionados