FAQ
Systemprogrammierung 2 - Häufig gestellte Fragen
Prüfung
Die folgenden Informationen betreffen nur die SP2-Klausur und nicht die SP1-Klausur.Bonuspunkte?
Die Bonuspunkte werden aus den Übungspunkten errechnet, die Sie in den Lehrveranstaltungen zu SP1 und SP2 sammeln können. Hierzu zählen einerseits die Übungsaufgaben und andererseits (anteilig) die Miniklausur, die zu Beginn des Semesters im Rahmen der SP2-Vorlesung über den Stoff von SP1 geschrieben wird. Die Bonuspunkte beeinflussen die angelegte Notenskala nicht, sondern werden nach erfolgter Klausurkorrektur auf die regulären Klausurpunkte einer bestandenen Klausur aufaddiert. Ihre in den Übungen erreichten Punkte können Sie im Waffel nach Login abrufen. Bitte prüfen Sie vor eventuellen Rückfragen, ob bereits Punkte für alle Aufgaben in Ihrem Konto eingetragen wurden. Bei Unstimmigkeiten wenden Sie sich bitte an die SP-Mailingliste (Organisation).Berechnung der Bonuspunkte?
Die Bonuspunkte berechnen sich nach der folgenden Formel: Beschreibung der einzelnen Teile:Tatsächlich erreichte Übungspunktezahl
Maximal erreichbare Übungspunktezahl
Maximal mögliche Bonuspunkte (10% der Klausurpunkte)
Verfall der Bonuspunkte?
Die Bonuspunkte aus einem vorherigen SP1 oder SP2-Semester verfallen jeweils nur, wenn in einem späteren Semester erneut am jeweiligen Übungsbetrieb (SP1/SP2) teilgenommen wird. Es zählen immer die Punkte aus dem Semester, in dem zuletzt (mindestens) eine Abgabe im jeweiligen Übungsbetrieb gemacht wurde. Eine Studentin, die also beispielsweise im SS21 am SP1-Übungsbetrieb teilnimmt, im WS21 am SP2-Übungsbetrieb, und im WS22 erneut am SP2-Übungsbetrieb, bekäme auf die SP2-Klausur danach die Bonuspunkte aus SS21 (SP1) plus WS22 (SP2) angerechnet. Ob die Klausur in diesem Fall direkt nach dem WS22 oder erst später abgelegt wird, ist egal, solange sie nicht erneut am Übungsbetrieb teilnimmt.Zugelassene Hilfsmittel?
Genaue Infos hierzu finden Sie auf der Seite "Prüfungsinformationen".Übung
Anmeldung für die Tafelübung?
Die Anmeldung für die Tafelübungen findet in einer den ersten Wochen der Vorlesungszeit im Windhundverfahren statt: waffel.Bedeutung der Miniklausur?
Die Miniklausur entspricht einer "normalen" Übungsaufgabe mit maximal 15 Punkten. Berechnungsformel für die entsprechende Übungspunktezahl:Mein Programm tut nicht was es soll!
Oft sind Warnungen des Übersetzers ein Hinweis auf Fehler im Programmcode. Daher ist es zielführend, die Warnungen des Übersetzers nicht zu ignorieren. Manchmal hilft es aber auch zusätzliche Warnungen des Übersetzers zu aktivieren.-Wextra
: Einige zusätzliche Warnungen.-Wshadow
: Warnung, falls eine lokale Variable eine Variable eines äußeren Blocks verdeckt.-Wformat=2
: Zusätzliche Überprüfungen von Formatstrings-Wlogical-op
: Warnung bei potentiellem Vertauschen von logischen und bitweisen Operationen- ...und noch mehr
clang-format [--dry-run] -i myprogram.c
: Editiert die Datei und formatiert den Code entsprechend eines einheitlichen Stils. Wenn Sie Probleme haben, ihren Code übersichtlich zu halten (Einrückung etc.) kann dies die Übersichtlichkeit erhöhen und die Fehlersuche beschleunigen.indent --linux-style source.c another_source.c
erfüllt den selben Zweck, editiert jedoch nur Einrückung & Klammerpositionen.cppcheck -x c --std=c11 -I. -i/usr/include --enable=all --suppress=missingIncludeSystem myprogram.c
findet durch statische Analyse u.a. undefiniertes Verhalten mit wenigen False-Positives.clang-tidy myprogram.c
findet Muster im Code die häufig in Programmfehlern resultieren. Einige Warnungen sind für die Entwicklung von POSIX-Konformen Programmen nicht hilfreich, verwenden Sie diese .clang-tidy Konfigurationsdatei um sie zu deaktivieren.valgrind --leak-check=full --show-leak-kinds=all ./mybinary
: Prüft auf ungültige Speicherzugriffe und erkennt/lokalisiert Speicherleaks.- Durch das Compilieren mit
-D_FORTIFY_SOURCE=1
in denCFLAGS
werden Pufferüberläufe in Bibliotheksfunktionen teilweise erkannt. - Mit dem clang ThreadSanitizer können Wettlaufsituationen gefunden werden. Kompilieren und linken Sie hierzu Ihr Programm mit
CC=clang
undEXTRA_CFLAGS=-fsanitize=thread -g -O1
und führen Sie es aus. - Helgrind kann Synchronisationsprobleme finden.
- Der clang AddressSanitizer kann ähnlich zu
valgrind
Speicherfehler finden. Kompilieren und binden Sie dazu Ihr Programm mitCC=clang
,LD=clang
, undEXTRA_CFLAGS=-fsanitize=undefined,leak,address,nonnull-attribute -fno-omit-frame-pointer -g -O1
und führen Sie es aus. - Compiler Explorer (godbolt.org) erlaubt es einem einfach zu sehen, zu welchem Maschinencode C Programme kompiliert werden und wie sich C in bestimmten Situationen genau verhält.
GDB
: Der Debugger 😉