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.
- Crear una cuenta en GitHub, con el correo de la universidad si es posible.
- Abrir el repositorio del curso en GitHub, el que indique el docente.
- Elegir Code → Codespaces → Create codespace. La primera vez tarda unos minutos.
- En la terminal de abajo, correr
env/check.sh. Todas las líneas deben decirok.
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
- Instalar Docker.
- En la carpeta del curso, correr
env/run.sh. La primera vez construye la imagen. - Dentro del contenedor, correr
env/check.sh. Todas las líneas deben decirok.
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 |