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