La depuració és una part essencial del desenvolupament de programari. En aquest tema, aprendrem diverses tècniques per identificar i corregir errors en el codi Objective-C. La depuració no només ajuda a trobar i solucionar errors, sinó que també millora la comprensió del funcionament intern del codi.
- Introducció a la Depuració
Què és la Depuració?
La depuració és el procés de trobar i corregir errors o problemes en el codi. Aquests errors poden ser de diversos tipus, com ara errors de sintaxi, errors lògics, errors de temps d'execució, etc.
Eines de Depuració
Les eines de depuració són programes que ajuden els desenvolupadors a analitzar i corregir el codi. Algunes de les eines més utilitzades en el desenvolupament d'Objective-C són:
- Xcode Debugger: L'eina de depuració integrada en Xcode.
- LLDB: Un depurador de línia de comandes que s'utilitza sovint amb Xcode.
- Instruments: Una eina d'Apple per analitzar el rendiment i la memòria.
- Utilització del Depurador de Xcode
Inici de la Depuració
Per iniciar la depuració en Xcode:
- Obre el teu projecte en Xcode.
- Selecciona el dispositiu o simulador en el qual vols executar l'aplicació.
- Fes clic al botó de "Play" per executar l'aplicació en mode de depuració.
Punts de Trencament (Breakpoints)
Els punts de trencament són una de les eines més potents per a la depuració. Permeten aturar l'execució del programa en un punt específic per analitzar l'estat del programa.
Com Afegir un Punt de Trencament
- Obre el fitxer de codi on vols afegir el punt de trencament.
- Fes clic a la barra de números de línia al costat de la línia de codi on vols aturar l'execució.
Tipus de Punts de Trencament
- Punts de Trencament de Codi: Aturen l'execució en una línia específica de codi.
- Punts de Trencament de Condició: Aturen l'execució només si es compleix una condició específica.
- Punts de Trencament d'Excepció: Aturen l'execució quan es produeix una excepció.
Inspecció de Variables
Quan l'execució s'atura en un punt de trencament, pots inspeccionar les variables per veure els seus valors actuals. Això es pot fer de diverses maneres:
- Consola de Depuració: Utilitza la consola per escriure comandes LLDB per inspeccionar variables.
- Vista de Variables Locals: Mostra les variables locals i els seus valors en la interfície de Xcode.
Comandes LLDB
LLDB és un depurador de línia de comandes que es pot utilitzar dins de Xcode. Algunes comandes útils són:
po <variable>
: Mostra el valor d'una variable.bt
: Mostra la traça de la pila (backtrace).c
: Continua l'execució fins al següent punt de trencament.
- Depuració de Problemes Comuns
Errors de Memòria
Els errors de memòria, com ara fuites de memòria i accessos a memòria no vàlida, són comuns en Objective-C. Utilitza Instruments per detectar i corregir aquests errors.
Exemple de Fuita de Memòria
- (void)createObject { NSObject *obj = [[NSObject alloc] init]; // No alliberem l'objecte, causant una fuita de memòria }
Errors de Temps d'Execució
Els errors de temps d'execució es produeixen quan el programa s'executa. Aquests errors poden ser difícils de detectar perquè no es mostren fins que el codi s'executa.
Exemple d'Error de Temps d'Execució
- Millors Pràctiques de Depuració
Escriu Codi Clar i Llegible
Un codi clar i ben comentat és més fàcil de depurar. Utilitza noms de variables descriptius i comenta el codi quan sigui necessari.
Utilitza el Control de Versions
El control de versions, com ara Git, permet fer un seguiment dels canvis en el codi i revertir-los si cal. Això és especialment útil quan es produeixen errors després de fer canvis recents.
Proves Unitàries
Les proves unitàries ajuden a detectar errors abans que el codi s'executi en producció. Escriu proves unitàries per a les funcions crítiques del teu codi.
Exercicis Pràctics
Exercici 1: Afegir Punts de Trencament
- Crea un projecte nou en Xcode.
- Escriu una funció que sumi dos números i retorni el resultat.
- Afegeix un punt de trencament a la línia on es retorna el resultat.
- Executa el projecte en mode de depuració i inspecciona el valor de les variables.
Solució
- (int)addNumbers:(int)a with:(int)b { int result = a + b; return result; // Afegeix un punt de trencament aquí }
Exercici 2: Depurar un Error de Temps d'Execució
- Escriu un codi que accedeixi a un element fora dels límits d'un array.
- Executa el codi en mode de depuració i utilitza la consola per identificar l'error.
Solució
Conclusió
La depuració és una habilitat essencial per a qualsevol desenvolupador. Utilitzant les tècniques i eines descrites en aquest tema, podràs identificar i corregir errors de manera més eficient. Recorda que la pràctica constant i l'ús de bones pràctiques de programació faran que la depuració sigui una tasca més senzilla i menys frustrant.
Curs de Programació en Objective-C
Mòdul 1: Introducció a Objective-C
- Introducció a Objective-C
- Configuració de l'Entorn de Desenvolupament
- Sintaxi i Estructura Bàsiques
- Tipus de Dades i Variables
- Operadors i Expressions
Mòdul 2: Flux de Control
Mòdul 3: Funcions i Mètodes
- Definició i Crida de Funcions
- Paràmetres de Funció i Valors de Retorn
- Sintaxi de Mètodes en Objective-C
- Mètodes de Classe i d'Instància
Mòdul 4: Programació Orientada a Objectes
Mòdul 5: Gestió de Memòria
- Introducció a la Gestió de Memòria
- Comptatge Automàtic de Referències (ARC)
- Retenció i Alliberament Manual
- Millors Pràctiques de Gestió de Memòria
Mòdul 6: Temes Avançats
Mòdul 7: Treballant amb Dades
- Gestió d'Arxius
- Serialització i Deserialització
- Conceptes Bàsics de Xarxes
- Treballant amb JSON i XML
Mòdul 8: Desenvolupament d'Interfícies d'Usuari
- Introducció a UIKit
- Vistes i Controladors de Vista
- Disseny Automàtic
- Gestió de l'Entrada de l'Usuari