En este módulo, aprenderás técnicas esenciales para depurar y perfilar tu código en Fortran. La depuración te ayudará a identificar y corregir errores en tu código, mientras que el perfilado te permitirá analizar el rendimiento de tu programa y optimizarlo.

  1. Introducción a la Depuración

1.1 ¿Qué es la Depuración?

La depuración es el proceso de identificar, analizar y corregir errores en el código. Estos errores pueden ser sintácticos, lógicos o de ejecución.

1.2 Herramientas de Depuración

Existen varias herramientas que puedes utilizar para depurar tu código en Fortran:

  • GDB (GNU Debugger): Una herramienta de depuración muy popular que soporta múltiples lenguajes, incluido Fortran.
  • Valgrind: Útil para detectar errores de memoria.
  • IDEs: Muchos entornos de desarrollo integrados (IDEs) como Eclipse y Visual Studio Code tienen capacidades de depuración integradas.

1.3 Técnicas de Depuración

  • Impresión de Mensajes: Utilizar print o write para mostrar valores de variables en diferentes puntos del programa.
  • Puntos de Interrupción (Breakpoints): Detener la ejecución del programa en puntos específicos para inspeccionar el estado del programa.
  • Seguimiento de Ejecución (Step Execution): Ejecutar el programa línea por línea para observar el flujo de control y el estado de las variables.

  1. Uso de GDB para Depurar Fortran

2.1 Instalación de GDB

Para instalar GDB, puedes usar el siguiente comando en sistemas basados en Debian/Ubuntu:

sudo apt-get install gdb

2.2 Compilación con Información de Depuración

Para utilizar GDB, debes compilar tu programa con la opción -g para incluir información de depuración:

gfortran -g -o mi_programa mi_programa.f90

2.3 Comandos Básicos de GDB

  • Iniciar GDB:
    gdb ./mi_programa
    
  • Ejecutar el Programa:
    run
    
  • Establecer un Punto de Interrupción:
    break nombre_del_archivo.f90:numero_de_linea
    
  • Continuar Ejecución:
    continue
    
  • Ejecutar Siguiente Línea:
    next
    
  • Inspeccionar una Variable:
    print nombre_de_variable
    

2.4 Ejemplo Práctico

Supongamos que tienes el siguiente programa en Fortran:

program ejemplo
  implicit none
  integer :: i, suma

  suma = 0
  do i = 1, 10
    suma = suma + i
  end do

  print *, 'La suma es: ', suma
end program ejemplo

Para depurarlo con GDB:

  1. Compila el programa con información de depuración:
    gfortran -g -o ejemplo ejemplo.f90
    
  2. Inicia GDB:
    gdb ./ejemplo
    
  3. Establece un punto de interrupción en la línea donde comienza el bucle do:
    break ejemplo.f90:6
    
  4. Ejecuta el programa:
    run
    
  5. Inspecciona el valor de suma:
    print suma
    

  1. Introducción al Perfilado

3.1 ¿Qué es el Perfilado?

El perfilado es el proceso de analizar el rendimiento de un programa para identificar cuellos de botella y optimizar el uso de recursos.

3.2 Herramientas de Perfilado

  • gprof: Una herramienta de perfilado que se utiliza junto con GCC.
  • Valgrind (con Callgrind): Útil para analizar el uso de memoria y el rendimiento.

3.3 Uso de gprof para Perfilado

3.3.1 Compilación con Información de Perfilado

Para utilizar gprof, debes compilar tu programa con las opciones -pg:

gfortran -pg -o mi_programa mi_programa.f90

3.3.2 Ejecutar el Programa

Ejecuta el programa normalmente:

./mi_programa

Esto generará un archivo llamado gmon.out que contiene datos de perfilado.

3.3.3 Generar el Informe de Perfilado

Utiliza gprof para generar un informe:

gprof ./mi_programa gmon.out > informe.txt

3.3.4 Interpretación del Informe

El informe de gprof te mostrará:

  • Tiempo de Ejecución: Cuánto tiempo se ha pasado en cada función.
  • Llamadas a Funciones: Cuántas veces se ha llamado a cada función.

3.4 Ejemplo Práctico

Supongamos que tienes el siguiente programa en Fortran:

program ejemplo
  implicit none
  integer :: i, j, suma

  suma = 0
  do i = 1, 1000
    do j = 1, 1000
      suma = suma + i + j
    end do
  end do

  print *, 'La suma es: ', suma
end program ejemplo

Para perfilarlo con gprof:

  1. Compila el programa con información de perfilado:
    gfortran -pg -o ejemplo ejemplo.f90
    
  2. Ejecuta el programa:
    ./ejemplo
    
  3. Genera el informe de perfilado:
    gprof ./ejemplo gmon.out > informe.txt
    

  1. Ejercicios Prácticos

Ejercicio 1: Depuración con GDB

  1. Escribe un programa en Fortran que calcule el factorial de un número.
  2. Introduce un error lógico en el cálculo del factorial.
  3. Utiliza GDB para identificar y corregir el error.

Ejercicio 2: Perfilado con gprof

  1. Escribe un programa en Fortran que realice una multiplicación de matrices.
  2. Compila el programa con las opciones necesarias para el perfilado.
  3. Ejecuta el programa y genera un informe de perfilado.
  4. Analiza el informe y optimiza el código para mejorar su rendimiento.

  1. Conclusión

En esta sección, has aprendido las técnicas y herramientas esenciales para depurar y perfilar tu código en Fortran. La depuración te permite identificar y corregir errores, mientras que el perfilado te ayuda a optimizar el rendimiento de tu programa. Estas habilidades son cruciales para desarrollar software eficiente y libre de errores. En el próximo módulo, exploraremos las mejores prácticas y técnicas de optimización de código en Fortran.

© Copyright 2024. Todos los derechos reservados