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 enthalten, getrennt durch ein Komma. Beispiel: dx @$cursession. TTD. Calls("module!symbol1", "module!symbol2", ...)

Eigenschaften

Eigenschaften Beschreibung
EventType Den Typ des Ereignisses Dies ist "Call" für alle TTD Calls-Objekte.
ThreadId Die Betriebssystemthread-ID des Threads, der die Anforderung gestellt hat.
UniqueThreadId Eine eindeutige ID für den Thread über die Ablaufverfolgung hinweg. Reguläre Thread-IDs können während der Lebensdauer eines Prozesses wiederverwendet werden, uniqueThreadIds können jedoch nicht verwendet werden.
Funktion Der symbolische Name der Funktion.
FunctionAddress Die Adresse der Funktion im Arbeitsspeicher.
ReturnValue Der Rückgabewert der Funktion. Wenn die Funktion einen ungültigen Typ aufweist, ist diese Eigenschaft nicht vorhanden.

Children

Object Beschreibung
Parameter[] Ein Array, das die Parameter enthält, die an die Funktion übergeben werden. Die Anzahl der Elemente variiert je nach Typsignatur der Funktion.
TimeStart Ein Positionsobjekt , das die Position am Anfang des Aufrufs beschreibt.
TimeEnd Ein Positionsobjekt , das die Position am Ende des Aufrufs beschreibt.

Hinweise

Time Travel Debugging 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. Wenn Symbolinformationen nicht verfügbar sind oder die Symbole auf öffentliche Symbolinformationen beschränkt wurden, ist es weiterhin möglich, Abfragen durchzuführen. Das Zeitreiseabfragemodul nimmt in diesem Szenario einige Annahmen vor:

  • 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 wird auf eine feste Zeichenfolge festgelegt: "UnknownOrMissingSymbols"

Diese Annahmen ermöglichen es, abfragen zu können, wenn keine angemessenen Symbolinformationen vorhanden sind. Um optimale Ergebnisse zu erzielen, verwenden Sie jedoch nach Möglichkeit vollständige PDB-Symbole.

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

Verwendungsbeispiel

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
        SystemTimeStart  : Friday, January 12, 2024 21:18:40.799
        SystemTimeEnd    : Friday, January 12, 2024 21:18:44.26        

Weitere Informationen

Debuggen von Zeitreisen – Einführung in Objekte zum Debuggen von Zeitreisen

Zeitreise-Debugging – Überblick

dx (Display Debugger Object Model Expression)