Laboratorio: entorno de trabajo
Todo el curso se trabaja en un mismo entorno, con g++, 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, salvo en las semanas con práctica, cuando una de ellas es para la práctica. 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, una cuenta de GitHub y una conexión estable a internet, así que funciona en las computadoras de la universidad. Sin internet, usen la opción 2, Docker en una laptop, que funciona sin conexión una vez construida la imagen.
- Crear una cuenta en GitHub, con el correo de la universidad si es posible.
- Abrir el repositorio del curso en GitHub, con el enlace que da 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 rápido.
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
g++ -Wall -Wextra -std=c++20 -g -fsanitize=address,undefined programa.cpp -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.
Para medir tiempos, compilen con -O2 y sin sanitizers. Los tiempos de un codespace varían
más que los de una laptop, así que repitan cada medición.
g++ -Wall -Wextra -std=c++20 -g -O0 programa.cpp -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 .cpp |
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 |