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
참고 항목
피드백
https://aka.ms/ContentUserFeedback
출시 예정: 2024년 내내 콘텐츠에 대한 피드백 메커니즘으로 GitHub 문제를 단계적으로 폐지하고 이를 새로운 피드백 시스템으로 바꿀 예정입니다. 자세한 내용은 다음을 참조하세요.다음에 대한 사용자 의견 제출 및 보기