Freigeben über


TTD ruft Objekte auf

BESCHREIBUNG

TTD-Aufrufobjekte werden verwendet, um Informationen zu Funktionsaufrufen zu geben, die im Verlauf einer Ablaufverfolgung auftreten.

Parameter

Eigenschaft BESCHREIBUNG
Funktion! SymbolName Ein oder mehrere in doppelten Anführungszeichen enthaltene Anführungszeichen, getrennt durch ein Komma. Beispiel: dx @$cursession. TTD. Calls("module!symbol1", "module!symbol2", ...)

Eigenschaften

Eigenschaft BESCHREIBUNG
EventType Art des Ereignisses. Dies ist "Aufruf" für alle TTD-Aufrufobjekte.
threadId Die Betriebssystemthread-ID des Threads, der die Anforderung gestellt hat.
UniqueThreadId Eine eindeutige ID für den Thread in der Ablaufverfolgung. Reguläre Thread-IDs können über die Lebensdauer eines Prozesses wiederverwendet werden, UniqueThreadIds jedoch nicht.
Funktion Der symbolische Name der Funktion.
FunctionAddress Die Adresse der Funktion im Arbeitsspeicher.
ReturnValue Der Rückgabewert der Funktion. Wenn die Funktion über einen void-Typ verfügt, ist diese Eigenschaft nicht vorhanden.

Children

Object BESCHREIBUNG
Parameter[] Ein Array mit den Parametern, die an die Funktion übergeben werden. Die Anzahl der Elemente variiert je nach Typsignatur der Funktion.
TimeStart Ein Positionsobjekt , das die Position zu Beginn des Aufrufs beschreibt.
TimeEnd Ein Positionsobjekt , das die Position am Ende des Aufrufs beschreibt.

Hinweise

Das Debuggen von Zeitreisen verwendet Symbolinformationen, die in den PDBs bereitgestellt werden, um die Anzahl der Parameter für eine Funktion und deren Typen, den Rückgabewerttyp und die aufrufende Konvention zu bestimmen. Für den Fall, dass Symbolinformationen nicht verfügbar sind oder die Symbole auf öffentliche Symbolinformationen beschränkt wurden, ist es weiterhin möglich, Abfragen durchzuführen. Die Zeitreiseabfrage-Engine trifft in diesem Szenario einige Annahmen:

  • Es gibt vier ganzzahlige 64-Bit-Parameter ohne Vorzeichen für die Funktion.
  • Der Rückgabewert ist eine 64-Bit-Ganzzahl ohne Vorzeichen
  • Der Funktionsname ist auf eine feste Zeichenfolge festgelegt: "UnknownOrMissingSymbols"

Diese Annahmen ermöglichen es, Abfragen zu stellen, wenn keine angemessenen Symbolinformationen vorhanden sind. Verwenden Sie jedoch nach Möglichkeit vollständige PDB-Symbole, um optimale Ergebnisse zu erzielen.

Beachten Sie, dass die Aufruffunktion Berechnungen durchführt und je nach Größe der Ablaufverfolgung eine Weile dauern kann, bis sie ausgeführt wird. Die CPU-Auslastung steigt während der Berechnung und beobachtet die CPU-Auslastung im Task-Manager, gibt einen Hinweis darauf, dass die Berechnung voranschreitet. Die Abfrageergebnisse werden im Arbeitsspeicher zwischengespeichert, sodass nachfolgende Abfragen für zuvor abgefragte Aufrufe erheblich schneller sind.

Beispielverwendung

Dieses Beispiel zeigt das Aufrufobjekt für ucrtbase!initterm.

0:000> dx -r2 @$cursession.TTD.Calls("ucrtbase!initterm")
@$cursession.TTD.Calls("ucrtbase!initterm")
    [0x0]
        EventType        : Call
        ThreadId         : 0x2074
        UniqueThreadId   : 0x2
        TimeStart        : 1E:5D0
        TimeEnd          : 2D:E
        Function         : ucrtbase!_initterm
        FunctionAddress  : 0x7ffb345825d0
        ReturnAddress    : 0x7ff6a521677e
        Parameters

Weitere Informationen

Debuggen von Zeitreisen – Einführung in das Debuggen von Objekten für Zeitreisen

Debuggen von Zeitreisen – Übersicht