 ##  [Aufrufgraph](/de/node/58771) 

 Definition

Ein Graph, dessen Knoten Prozeduren, Funktionen oder Methoden sind und dessen gerichtete Kanten anzeigen, dass eine Routinen eine andere aufrufen kann; Kanten werden typischerweise vom Caller zum Callee gezeichnet und können mit Aufrufstellen oder Kontexten annotiert sein.

 

 

 

 

 

 





## Prinzip

Prinzip

Die Aufrufbeziehungen eines Programms als Graph abstrahieren, sodass interprozedurale Analysen (Erreichbarkeit über Aufrufe, Rekursionserkennung, Aufrufkettenaufzählung) und Transformationen (Inlining, Dead-Code-Elimination, Whole-Program-Optimierung) durchgeführt werden können.

 

 

 

 

 





## Demonstration

Demonstration

In einem Programm mit Funktionen A, B und C, wobei A B aufruft und B bedingt C aufruft, enthält der Aufrufgraph die Kanten A→B und B→C; bei Rekursion erscheint ein Zyklus (z. B. C→A), was Rekursions- und Stack-Analysen beeinflusst.

 

 

 

 

## Fehlanwendung

Fehlanwendung

Einen statischen Aufrufgraphen als präzisen Laufzeitaufrufverlauf zu behandeln — dynamische Dispatches, reflektive Aufrufe oder nicht aufgelöste indirekte Aufrufe zu ignorieren — kann zu falschen Annahmen über ausführbare Funktionen und zu unsicheren Optimierungen führen.

 

 

 

 

 





## Konsequenz

Konsequenz

Richtig konstruiert ermöglichen Aufrufgraphen interprozedurale Analysen wie Verfeinerung der Points-to-Information, Propagation von Seiteneffekt-Zusammenfassungen und Identifikation heißer Aufrufketten für Optimierung und Profiling.

 

 

 

 

## Umkehrung

Umkehrung

Perspektive umkehren zu einem Callee-zu-Caller-Graphen oder einem dynamischen Aufrufbaum, der tatsächliche Aufrufsequenzen zur Laufzeit aufzeichnet; die invertierte Ansicht betont Nutzungspunkte und realen Call-Stacks statt potentieller Aufrufbeziehungen.

 

 

 

 

 





## Abgrenzung

Abgrenzung

Unterscheide statische (konservative, möglicherweise über-approximierende) und dynamische (beobachtete, möglicherweise unter-approximierende) Aufrufgraphen. Der Standard-Aufrufgraph erfasst nicht von sich aus Argumentwerte, Timing oder Nebenläufigkeits-Interleavings ohne Erweiterung.

 

 

 

 

 





## Semantische Spannung

Semantische Spannung

Spannung zwischen Aufrufgraph und anderen Abhängigkeitsgraphen (z. B. Datenabhängigkeitsgraph): Aufrufgraphen erfassen Aufruftopologie, nicht Datenfluss oder Kontrollfluss innerhalb von Funktionen; ihre Vermischung verschleiert Analyseziele.

 

 

 

 

 





## Synthese

Synthese

Ein Aufrufgraph ist die Programmebene-Abstraktion dessen, wer wen aufrufen kann: Knoten sind Routinen und Kanten repräsentieren potentielle oder beobachtete Aufrufe und bilden das Rückgrat interprozeduraler Analysen, wobei statische vs. dynamische Aussagen zu beachten sind.