TTD 呼叫物件

Description

TTD 呼叫 物件可用來提供在追蹤過程中發生的函數調用相關信息。

參數

屬性 Description
功能!SymbolName 一或多個包含在雙引號中,並以逗號分隔。 例如 dx @$cursession。TTD。呼叫 (“module!symbol1”、“module!symbol2”, ...)

屬性

屬性 Description
EventType 事件的類型。 這是所有 TTD 呼叫物件的「呼叫」。
ThreadId 發出要求的線程OS線程標識碼。
UniqueThreadId 整個追蹤線程的唯一標識碼。 一般線程標識碼可以在進程存留期間重複使用,但 UniqueThreadIds 無法重複使用。
函式 函式的符號名稱。
FunctionAddress 函式的記憶體位址。
ReturnValue 函式的傳回值。 如果函式具有 void 類型,則此屬性將不會存在。

Children

Object 描述
Parameters[] 數位,包含傳遞至函式的參數。 項目數目會根據函式的類型簽章而有所不同。
TimeStart 位置物件,描述呼叫開頭的位置。
TimeEnd position 物件,描述呼叫結尾的位置。

備註

時間移動偵錯會使用 PDB 中提供的符號資訊來判斷函式及其類型、傳回值類型和呼叫慣例的參數數目。 如果符號信息無法使用,或符號已限製為公用符號資訊,仍然可以執行查詢。 時間移動查詢引擎將會在此案例中做出一些假設:

  • 函式有四個 64 位無符號整數參數
  • 傳回值為64位無符號整數
  • 函式名稱設定為固定字串:「UnknownOrMissingSymbols」

這些假設可讓查詢在沒有適當的符號信息的情況下進行。 不過,為了獲得最佳結果,請盡可能使用完整的 PDB 符號。

請注意,Calls 函式會執行計算,而且視追蹤的大小而定,可能需要一段時間才能執行。 CPU 使用量會在計算期間尖峰,並在任務管理器中監看 CPU 使用量,表示計算正在進行中。 查詢結果會快取在記憶體中,因此針對先前查詢呼叫的後續查詢會大幅加快。

使用方式範例

此範例顯示 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

另請參閱

時間移動偵錯 - 時間移動偵錯對象的簡介

時間移動偵錯 - 概觀