La depuració és una part essencial del desenvolupament de programari. Ens permet identificar i corregir errors en el nostre codi, assegurant que les aplicacions funcionin correctament. En aquest tema, explorarem diverses tècniques de depuració en Dart, incloent-hi l'ús d'eines i mètodes per trobar i solucionar problemes de manera eficient.
Continguts
Introducció a la Depuració
La depuració és el procés de trobar i corregir errors o "bugs" en el codi. Els errors poden ser de diversos tipus, com ara errors de sintaxi, errors lògics o problemes de rendiment. La depuració ens ajuda a entendre el comportament del nostre programa i a assegurar-nos que funcioni com s'espera.
Ús de print()
per a la Depuració
Una de les tècniques més senzilles i comunes per depurar és utilitzar la funció print()
per mostrar missatges i valors de variables en la consola.
Exemple:
void main() { int a = 5; int b = 10; int sum = a + b; print('El valor de a és: $a'); print('El valor de b és: $b'); print('La suma de a i b és: $sum'); }
Explicació:
En aquest exemple, utilitzem print()
per mostrar els valors de les variables a
, b
i sum
. Això ens ajuda a verificar que els valors són correctes i que la suma es calcula com s'espera.
Depuració amb el Debugger
El debugger és una eina poderosa que ens permet executar el codi pas a pas, inspeccionar variables i veure el flux d'execució del programa. La majoria dels entorns de desenvolupament integrats (IDE) com Visual Studio Code i IntelliJ IDEA tenen suport per a la depuració.
Exemple:
- Configura el Debugger: En Visual Studio Code, crea un fitxer
launch.json
per configurar el debugger. - Executa el Debugger: Col·loca punts de ruptura (breakpoints) en el codi i executa el debugger.
Punts de Ruptura (Breakpoints)
Els punts de ruptura són marcadors que podem col·locar en el codi per aturar l'execució en un punt específic. Això ens permet inspeccionar l'estat del programa en aquest moment.
Exemple:
void main() { int a = 5; int b = 10; int sum = a + b; // Col·loca un punt de ruptura aquí print('La suma de a i b és: $sum'); }
Explicació:
Col·locant un punt de ruptura en la línia on es calcula la suma, podem aturar l'execució i inspeccionar els valors de a
, b
i sum
abans de continuar.
Inspecció de Variables
Quan el programa està aturat en un punt de ruptura, podem inspeccionar els valors de les variables per veure si són correctes.
Exemple:
En Visual Studio Code, quan el programa està aturat, podem passar el cursor sobre les variables per veure els seus valors o utilitzar el panell de variables per inspeccionar-les.
Depuració de Codi Asíncron
La depuració de codi asíncron pot ser més complexa, ja que el flux d'execució no és lineal. Els debuggers moderns tenen suport per a la depuració de codi asíncron, permetent-nos veure el flux d'execució a través de futures i streams.
Exemple:
Future<void> fetchData() async { print('Iniciant la petició...'); await Future.delayed(Duration(seconds: 2)); print('Dades rebudes'); } void main() { fetchData(); print('Final del programa'); }
Explicació:
Podem col·locar punts de ruptura dins de la funció fetchData
per veure com es comporta el codi asíncron.
Consells Addicionals
- Utilitza logs: Els logs són útils per a la depuració en entorns de producció on no podem utilitzar un debugger.
- Divideix i venceràs: Si tens un problema complex, intenta dividir-lo en parts més petites i depura cada part per separat.
- Revisa la documentació: La documentació de Dart i les eines que utilitzes sovint conté informació útil per a la depuració.
Exercicis Pràctics
Exercici 1: Depuració amb print()
- Escriu un programa que calculi el factorial d'un nombre.
- Utilitza
print()
per mostrar els valors intermedis i verificar que el càlcul és correcte.
Solució:
int factorial(int n) { int result = 1; for (int i = 1; i <= n; i++) { result *= i; print('Factorial de $i és $result'); } return result; } void main() { int num = 5; print('El factorial de $num és ${factorial(num)}'); }
Exercici 2: Depuració amb el Debugger
- Escriu un programa que inverteixi una cadena.
- Col·loca punts de ruptura per inspeccionar els valors de les variables durant l'execució.
Solució:
String reverseString(String s) { String reversed = ''; for (int i = s.length - 1; i >= 0; i--) { reversed += s[i]; } return reversed; } void main() { String str = 'hello'; print('La cadena invertida de $str és ${reverseString(str)}'); }
Conclusió
La depuració és una habilitat essencial per a qualsevol programador. Utilitzant tècniques com print()
, el debugger, punts de ruptura i inspecció de variables, podem identificar i corregir errors de manera eficient. Practicar aquestes tècniques ens ajudarà a millorar la nostra capacitat per escriure codi robust i fiable.
Curs de Programació en Dart
Mòdul 1: Introducció a Dart
- Introducció a Dart
- Configuració de l'Entorn de Desenvolupament
- El Teu Primer Programa en Dart
- Sintaxi i Estructura Bàsica
Mòdul 2: Conceptes Bàsics de Dart
Mòdul 3: Col·leccions
Mòdul 4: Programació Orientada a Objectes en Dart
Mòdul 5: Funcionalitats Avançades de Dart
Mòdul 6: Gestió d'Errors i Depuració
Mòdul 7: Paquets i Biblioteques de Dart
Mòdul 8: Dart per a Web i Mòbil
- Introducció a Flutter
- Construcció d'una Aplicació Simple amb Flutter
- Dart per al Desenvolupament Web