IDE Window: Call Stack/de

From Lazarus wiki
Jump to navigationJump to search

Deutsch (de) English (en) français (fr) русский (ru)

Wichtig

Sie müssen den Debugger einrichten und das zu debuggende Projekt starten. Nur dann ist der Aufrufstack hilfreich. Die auf dieser Seite gezeigte Ausgabe basiert auf dem GNU Debugger, GDB und mag wie C aussehen. Andere Debugger mögen einen mehr nach Pascal aussehenden Stil anzeigen. Gegenwärtig ist GDB der einzige unterstützte Debugger.

Dialog

Callstack.png

Was ist der Aufrufstack?

Der Aufrufstack ist der Stack der Funktionsaufrufe. Die oberste Zeile ist die aktuelle Funktion, die unterste Zeile ist das Hauptprogramm.

Quelle

Dies ist der Dateiname der Quelle. Diese Information wird aus den Debugging-Informationen gewonnen, die im executable enthalten sind. Nur jene Teile des Programms, die mit Debugger-Informationen kompiliert sind, enthalten solche Informationen.

Zeile

Wenn die Position Debugger-Informationen enthält, wird die Quellenzeile angezeigt, andernfalls nur der Adresszeiger im executable. Es ist die Zeile, in der die nächste Funktion aufgerufen wird.

Anmerkung: Die Zeile ist die Zeile zum Zeitpunkt der Kompilierung. Wenn Sie Zeilen eingefügt/gelöscht haben, wird die Information nicht exakt sein.

Funktion

Der verstümmelte Name der Prozedur/Funktion. Der Compiler konvertiert die Pascal-Bezeichner in Namen, die von den GNU Werkzeugen genutzt werden können. Zum Beispiel:

 TAPPLICATION__CREATEFORM(0x81fb738, void, (^TAPPLICATION) 0xb7cd0014)

Das bedeutet:

  • Der verstümmelte Funktionsname ist TAPPLICATION__CREATEFORM, welches die TApplication.CreateForm Prozedur der LCL Unit forms.pp ist. Da Pascal nicht auf Groß- und Kleinschreibung achtet, was die GNU Werkzeuge aber tun, konvertiert FPC den Namen in Großbuchstaben. Weil die GNU Werkzeuge keine Klassen und Objekte kennen, wird class.method in einen globalen Funktionsnamen konvertiert.
  • Dann hängt die Parameterliste von der Plattform und den Aufrufkonventionen ab. Das bedeutet, die Parameterliste kann umgekehrt werden, beginnend mit dem ganz rechten Parameter. Dies ist der Fall im obigen Beispiel.
  • Der 'Self' Parameter ist impliziert. Das bedeutet, Sie schreiben ihn nicht in den Pascal-Quelltext, da ihn FPC automatisch erzeugt. Dies ist immer der erste Parameter. Wegen der umgekehrten Reihenfolge wird er als letzter Parameter angezeigt. Er ist vom Typ ^TAPPLICATION und sein hexadezimaler Wert ist 0xb7cd0014.
  • Der nächste Parameter in Pascal ist 'var Reference', welcher keinen Typ hat. Daher ist er 'void'.
  • Der letzte Parameter in Pascal ist 'InstanceClass: TComponentClass'. Der Parameter ist auf dem GNU Level nur ein Zeiger und hat den hexadezimalen Wert 0x81fb738.

Tricks

Ein Doppelklick auf ein Element springt zum Quelltext.

Popup Menü

Callstack popmenu.png

Show

Springt zur Quelltextposition des aktuellen Elements.

Set as current

(nicht implementiert)

Setzt den ausgewählten Eintrag als aktuellen Rahmen. Lokale Variablen sind nur innerhalb eines Rahmens bekannt. Durch Setzen des aktuellen Rahmens, können Sie die Werte der Variablen im Kontext der gewählten Prozedur betrachten.

Alle kopieren

Kopiert den Aufrufstack in die Zwischenablage.