Laboratorio: entorno de trabajo

Todo el curso se trabaja en un mismo entorno, con gcc, gdb, valgrind, make y Git. También trae Python 3.14, que solo sirve para correr las pruebas automáticas. Hay dos formas de abrirlo.

Cada semana hay dos sesiones de laboratorio de 2 horas. Cada guía dice qué se hace en cada sesión. Lo que no terminen en una sesión lo terminan antes de la siguiente.

Opción 1: GitHub Codespaces

Solo requiere un navegador, internet y una cuenta de GitHub, así que funciona en las computadoras de la universidad. Codespaces necesita una conexión estable a internet. Si el laboratorio no la tiene, usen Docker (opción 2): una vez construida la imagen, funciona sin conexión.

  1. Crear una cuenta en GitHub, con el correo de la universidad si es posible.
  2. Abrir el repositorio del curso en GitHub, el que indique el docente.
  3. Elegir Code → Codespaces → Create codespace. La primera vez tarda unos minutos.
  4. En la terminal de abajo, correr env/check.sh. Todas las líneas deben decir ok.

Al terminar, cierren la pestaña y detengan el codespace desde https://github.com/codespaces. Revisen la cuota gratuita de su cuenta en esa misma página, porque con 4 horas de laboratorio a la semana se consume más rápido que en Introducción a la Computación.

Opción 2: Docker en una laptop

  1. Instalar Docker.
  2. En la carpeta del curso, correr env/run.sh. La primera vez construye la imagen.
  3. Dentro del contenedor, correr env/check.sh. Todas las líneas deben decir ok.

Se edita con cualquier editor en la laptop, porque la carpeta es la misma dentro y fuera del contenedor.

Compilar

gcc -Wall -Wextra -std=c17 -g -fsanitize=address,undefined programa.c -o programa
./programa

Cada laboratorio trae un Makefile, así que normalmente basta con make y make test.

Valgrind y gdb se usan sin sanitizers: compilen con -g -O0, sin -fsanitize.

gcc -Wall -Wextra -std=c17 -g -O0 programa.c -o programa
valgrind --leak-check=full ./programa

Problemas frecuentes

Síntoma Causa Qué hacer
El codespace no abre o se desconecta Conexión o cuota agotada Revisar la conexión y el uso en https://github.com/codespaces; avisar al docente
permission denied al ejecutar El archivo no es ejecutable o se llamó sin ./ chmod +x archivo o usar ./programa
command not found Están fuera del entorno Comprobar que la terminal es la del codespace o del contenedor
undefined reference to una función propia Falta enlazar un .c Agregar el archivo al comando o al Makefile
undefined reference to sqrt Falta la biblioteca matemática Agregar -lm al final del comando
valgrind da errores raros o se niega a correr El programa se compiló con sanitizers Compilar sin -fsanitize
dubious ownership de Git Carpeta de otro usuario Abrir la carpeta desde env/run.sh
El programa parece colgado Espera datos de la entrada, o hay un ciclo infinito Escribir los datos, o Ctrl+D para terminar la entrada y Ctrl+C para cortarlo