다음을 통해 공유


TTD 호출 개체

Description

TTD 호출 개체는 추적 과정에서 발생하는 함수 호출에 대한 정보를 제공하는 데 사용됩니다.

매개 변수

속성 Description
함수! SymbolName 큰따옴표로 쉼표로 구분된 하나 이상의 큰따옴표가 들어 있습니다. 예를 들어 dx @$cursession. Ttd. Calls("module!symbol1", "module!symbol2", ...)

속성

속성 Description
EventType 이벤트의 유형입니다. 모든 TTD 호출 개체에 대해 "호출"입니다.
스레드 Id 요청을 수행한 스레드의 OS 스레드 ID입니다.
UniqueThreadId 추적 전체의 스레드에 대한 고유 ID입니다. 일반 스레드 ID는 프로세스의 수명 동안 재사용될 수 있지만 UniqueThreadIds는 사용할 수 없습니다.
함수 함수의 기호 이름입니다.
FunctionAddress 메모리에 있는 함수의 주소입니다.
ReturnValue 함수의 반환 값입니다. 함수에 void 형식이 있으면 이 속성이 존재하지 않습니다.

Children

Object Description
Parameters[] 함수에 전달된 매개 변수를 포함하는 배열입니다. 요소 수는 함수의 형식 서명에 따라 달라집니다.
TimeStart 호출 시작 시의 위치를 설명하는 위치 개체 입니다.
TimeEnd 호출이 끝날 때의 위치를 설명하는 위치 개체 입니다.

설명

시간 이동 디버깅은 PDB에 제공된 기호 정보를 사용하여 함수 및 해당 형식의 매개 변수 수, 반환 값 형식 및 호출 규칙을 결정합니다. 기호 정보를 사용할 수 없거나 기호가 공용 기호 정보로 제한된 경우에도 쿼리를 수행할 수 있습니다. 시간 이동 쿼리 엔진은 이 시나리오에서 몇 가지 가정을 합니다.

  • 함수에는 4개의 64비트 부호 없는 정수 매개 변수가 있습니다.
  • 반환 값은 부호 없는 64비트 정수입니다.
  • 함수 이름은 고정 문자열 "UnknownOrMissingSymbols"로 설정됩니다.

이러한 가정을 통해 적절한 기호 정보가 없는 경우 쿼리를 만들 수 있습니다. 그러나 최상의 결과를 위해 가능한 경우 전체 PDB 기호를 사용합니다.

호출 함수는 계산을 수행하며 추적 크기에 따라 실행하는 데 시간이 걸릴 수 있습니다. 계산 중에 CPU 사용량이 급증하고 작업 관리자에서 CPU 사용량을 확인하면 계산이 진행 중임을 알 수 있습니다. 쿼리 결과는 메모리에 캐시되므로 이전에 쿼리된 호출에 대한 후속 쿼리가 훨씬 빠릅니다.

Example Usage

이 예제에서는 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

참고 항목

시간 이동 디버깅 - 시간 이동 디버깅 개체 소개

시간 이동 디버깅 - 개요