3 - Debugging [ID:21527]
50 von 318 angezeigt

Mein Lieber Leute, willkommen zum dritten Teil des zweiten Kapitels für die Vorlesungen

Betriebssysteme. Hier geht es jetzt weiter. Betriebssystementwicklung, Debugging. Die

Frage, wie entwanzt man ein Betriebssystem? Wir haben uns ja schon mal grob angeguckt,

welche Möglichkeiten es gibt, mit Printf, mit Emulatoren, Debugger und so weiter.

Entwanzen, eine Wanze, wo kommt überhaupt das Wort entwanzen, Debugging her?

Es gab wirklich mal einen Bug in einem Rechner, ihr seht hier aufgeklebt mit Tesafilm, eine

Motte, die Motte klebte irgendwann mal, war eingeklemmt in einem Relais, in einem der ersten Rechner.

Da das Relais nicht mehr richtig schalten konnte, war da ein Bug im Rechner und beim

Debugging entwanzen hat man halt die Motte aus dem Relais rausgezogen und dann hat das

System wieder funktioniert. Und seitdem heißt es in der Informatik halt immer Debugging,

wenn man irgendwie ein System wieder zum Laufen bringen will. Jo, wie machen wir es? Printf,

eine Variante. Was wäre so die Idee, wenn man was debuggen will, dann schreibt man an

vielen Stellen in seinem Programm einfach ein Printf rein, gibt da irgendwas aus und

wenn man es dann laufen lässt, dann kann man gucken, ob der Kontrollfluss an der einen

oder anderen Stelle vorbeigekommen ist und vielleicht ahnt man dann, wo das Problem sein

könnte. Problem dabei, Printf erstmal gibt es nicht. Wir haben gesagt, die libc, libstandardc++

und so kann man nicht benutzen, weil das Printf, was da drin ist, ein write system call macht.

Write system call haben wir nicht. Nächste Problem kann natürlich auch noch sein, wir

haben vielleicht nicht einmal einen Bildschirm. Also selbst wenn wir das Printf selber schreiben

würden, wir könnten nirgends ausgeben. Gut, das sind erstmal so grundlegende Probleme,

die kann man vielleicht noch lösen. Das nächste Problem, was es auch noch gibt, das kann man

per Definition nicht lösen. Warum? Ein Printf ist normalerweise ein relativ lang laufendes

Unterprogramm, zeitlich gesehen lang laufend. Warum? Beim Printf gibt man ja zum Beispiel

mal Zahlen aus und Zahlen wollen erstmal vom Binärsystem ins Dezimalsystem konvertiert

werden, das dauert ein bisschen und dann noch auf dem Bildschirm malen, dauert auch noch

ein bisschen, zeitlich gesehen relativ lang laufend. Das heißt, gerade in unserer Welt,

wo es um Race-Conditions geht, haben wir es richtig koordiniert oder nicht, richtiges

Locking oder falsches Locking und wenn die Race-Conditions plötzlich anders aussehen,

weil sich das Zeitverhalten geändert hat durch das Printf, kann es einem jederzeit passieren,

dass Fehler plötzlich nicht mehr auftreten oder anders auftreten. Ganz typisch, man hat

ein Problem, man baut die Printf ein und das Problem ist weg. Nicht weil das eigentliche

Problem weg ist, sondern man sieht es einfach nicht mehr, weil das Printf das zeitliche

Verhalten geändert hat und damit die Race-Conditions nicht mehr auftreten. Das ist etwas, da kommt

man nicht oben hin. Das ist einfach so. Da muss man sich nur klar machen, dass dem so

ist und dass ein Printf von daher nicht immer funktioniert. Nixdestotrotz hätte man häufig

sehr gerne irgendeine Art von Printf, gerade am Anfang der Entwicklung, weil man mal gucken

will, bin ich überhaupt bis zu einem bestimmten Punkt gekommen, ja oder nein. Da wäre ich

froh drum, wenn dann auf dem Bildschirm irgendwas erscheinen würde. Funktion sowieso hat funktioniert.

Wenn wir keinen Bildschirm haben, wenn wir keinen Printf haben, geht das nicht. Da gibt

es manchmal Möglichkeiten, viele kleine Entwickler-Boards haben irgendwelche LEDs on Board, die kann man

beispielsweise für sowas benutzen. Ich schalte einfach auf rot, wenn ich dann die ersten

fünf Zeilen meines Programms durchlaufen habe, dann weiß ich, die ersten fünf Zeilen, da

ist er nicht abgestürzt. Wenn er die nächsten zehn Zeilen geschafft hat, dann schalte ich

eine andere Leuchttiode auf grün und so hangel ich mich dann vielleicht durch mein Programm

durch und gucke immer, welche Leuchttiode geht an. Oder ich kann sie auch blinken lassen,

wie lange blinkt sie dann, wann blinkt sie plötzlich nicht mehr. Ein bisschen komfortabler

wäre eine serielle Schildstelle, da könnte man natürlich ein Printf auch drüber leiten.

Dann müsste man einfach an die serielle Schildstelle auf der anderen Seite irgendwie ein kleines

Terminal oder die serielle Schildstelle von einem PC oder so dranhängen und sich da die

Zeichen wieder abholen. Klein bisschen Vorsicht, eine serielle Schildstelle ist natürlich

Teil einer Videoserie :
Teil eines Kapitels:
Betriebssystementwicklung

Zugänglich über

Offener Zugang

Dauer

00:34:44 Min

Aufnahmedatum

2020-10-20

Hochgeladen am

2020-10-20 20:26:52

Sprache

de-DE

2. Kapitel der Vorlesung Betriebssysteme.

Folien zum Video.

Tags

betriebssysteme operating systems
Einbetten
Wordpress FAU Plugin
iFrame
Teilen