Call Stack
Dieser Beitrag ist eine Begriffserklärung zum Call Stack (Aufrufstapel) – inklusive Prüfungsfragen, Praxisbeispiel und Tags.
In a Nutshell
Der Call Stack speichert während der Programmausführung alle aktiven Funktions-/Methodenaufrufe. Das ist zentral für Debugging und Fehleranalyse.
Kompakte Fachbeschreibung
Jeder Aufruf erzeugt einen Stack Frame mit Informationen wie:
- Parameter
- lokale Variablen
- Rücksprungadresse
Beim Verlassen der Funktion wird der Frame entfernt (LIFO-Prinzip). Bei Exceptions zeigt der Stacktrace die Aufrufkette bis zur Fehlerstelle.
Bei tiefer Rekursion oder endlosen Aufrufen kann es zu Stack Overflow kommen.
Prüfungsrelevante Stichpunkte
- Call Stack speichert aktive Aufrufe
- LIFO + Stack Frames
- Stacktrace zeigt Weg zum Fehler (IHK-relevant)
- Stackgröße begrenzt → Overflow möglich
- Security: Stacktraces können interne Pfade/Infos leaken
- Wirtschaftlichkeit: schnelleres Debugging spart Zeit
Kernkomponenten
- Stack Frame
- Funktionsparameter
- Lokale Variablen
- Rücksprungadresse
- Stacktrace
- Aufrufhierarchie
- Rekursive Aufrufe
- Stack Overflow
- Debugging-Tools (Call-Stack-Ansicht)
- Exception-Auswertung
Praxisbeispiel (Python)
def a():
b()
def b():
c()
def c():
raise Exception("Fehler!")
a()
Erklärung: Beim Fehler in c() zeigt der Stacktrace die Kette c() → b() → a() → Hauptprogramm.
Vorteile und Nachteile
Vorteile
- Strukturierte Nachverfolgung von Abläufen
- Unerlässlich für Fehleranalyse
Nachteile
- Begrenzte Stackgröße
- Komplexe Call Stacks schwer zu interpretieren
- Stacktraces können sensible Informationen enthalten
Typische Prüfungsfragen (mit Kurzantwort)
- Was ist der Call Stack? Laufzeitstruktur, die aktive Aufrufe speichert.
- Was ist ein Stack Frame? Ein Eintrag pro Aufruf (Locals/Parameter/Return Address).
- Was ist Stack Overflow? Stack läuft über (z.B. durch endlose Rekursion).
Zusätzliche Hinweise
- Stacktraces in Logs mit Kontext (Timestamp/Thread-ID/Session-ID) sind in der Praxis hilfreich.
- Stacktraces sollten nicht ungefiltert extern sichtbar sein.
Weiterführende Infos
- https://docs.python.org/3/library/traceback.html
- https://code.visualstudio.com/docs/editor/debugging