共用方式為


TTD 呼叫物件

描述

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

參數

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

屬性

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

Children

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

備註

時間移動偵錯會使用 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
        SystemTimeStart  : Friday, January 12, 2024 21:18:40.799
        SystemTimeEnd    : Friday, January 12, 2024 21:18:44.26        

另請參閱

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

時間移動偵錯 - 概觀

dx (顯示除錯程式物件模型表示式)