Laborationer
Laborationerna är obligatoriska. De äger rum i grupper i läsveckorna 2 - 7 i läsperiod HT2. Man ska samarbeta två och två.
Anmälan och gruppindelning görs i SAM.
Reflektionsfrågor
Till varje labb finns ett antal reflektionsfrågor. Dessa finns även som quiz i Canvas. När du gjort klart labben ska du svara på reflektionsfrågorna i detta quiz. Efter att du gjort det visas kommentarer eller svarsförslag. Jämför dessa med dina svar och fråga vid labbredovisningen om det är något du undrar över.
Praktisk information
En kort introduktion till kommandorads-miljön, som är relevant för Linux, Mac, och datorsalarna på campus, finns på sidan Om kommandoraden. (Notera att Windows Subsystem for Linux (WSL) introducerades i Windows 10, för äldre Windows-system är Cygwin ett alternativ.)
Kodskelett till labbarna distribueras med hjälp av versionshanteringsverktyget git. Labhäftet innehåller en kort introduktion, och länkar till dokumentation finns på sidan introduktion till git.
En debugger är ett viktigt verktyg när man utvecklar program, och speciellt i språk som C och C++ som inte har så mycket inbyggda skyddsnät eller ger detaljerad information när programmet krashar. De två debuggers som kan användas i labbarna och nämns i labbhandledningen är lldb och gdb.
- En introduktion til lldb finns på https://lldb.llvm.org/use/tutorial.html och en översättningstabell av kommandon mellan lldb och gdb finns på https://lldb.llvm.org/use/map.html
- Manualen till gdb finns som pdf och webbsida.
Uppgifter
Labbhandledningen finns i cpplabs.pdf
Schema för laborationsuppgifterna:
Laboration 1, Introduktion till verktygen, grundläggande C++: Läsvecka 2
Laboration 2, Introduktion till standardbiblioteket: Läsvecka 3--4
Laboration 3, Debugging: Läsvecka 5
Laboration 4, Strängar och strömmar; felhantering; generisk programmering: Läsvecka 6--7
Notera att det är två labtillfällen för lab 2 och 4.
Noter
Lab 1
På vissa system (bland annat Mac med arm-processor) fungerar den "strömlinjeformade" leak sanitizer (-fsanitize=leak
) inte.
leak sanitizer ingår även som en del i den större address sanitizer (-fsanitize=address
). Om -fsanitize=leak inte fungerar kan du testa att bygga med -fsanitize=address.
Sen kan du behöva sätta miljövariablen ASAN_OPTIONS='detect_leaks=1'
för att aktivera leak sanitizer.
Till exempel, för att köra programmet leak (byggt med -fsanitize=address
) med kontroll för minnesläckor aktiverad ge kommandot:
ASAN_OPTIONS='detect_leaks=1' ./leak
och omvänt kan du stänga av leak sanitizer (men behålla resten av address sanitizers kontroller) med
ASAN_OPTIONS='detect_leaks=0' ./leak
Se dokumentationen för mer detaljer. Google Sanitizers finns på https://github.com/google/sanitizers.
Lab2
Om /usr/share/dict/words
inte finns på ditt system kan du använda denna filen: dict-words.txt
Alternativt kan du installera ordlistan. I Ubuntu finns ordlistan i paketet wbritish respektive or wamerican. Kommandot
sudo apt-get install wbritish
(or wamerican)
installerar en ordlista under /usr/share/dict/words