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:

  1. Configura el Debugger: En Visual Studio Code, crea un fitxer launch.json per configurar el debugger.
  2. 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()

  1. Escriu un programa que calculi el factorial d'un nombre.
  2. 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

  1. Escriu un programa que inverteixi una cadena.
  2. 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.

© Copyright 2024. Tots els drets reservats