다음을 통해 공유


시간 이동 디버깅 - 추적 파일 작업

시계가 있는 시간 이동 디버깅 로고입니다.

이 섹션에서는 시간 이동 디버깅에서 만들고 사용하는 파일로 작업하는 방법을 설명합니다.

추적 파일 개요

시간 이동 디버깅은 다음 파일을 사용하여 코드 실행을 디버그합니다.

  • 추적 파일에는 코드 실행 기록이 포함되며 . RUN 확장.

  • 인덱스 파일을 사용하면 추적 파일의 정보에 빠르게 액세스할 수 있으며 . IDX 확장.

  • 기록 오류 및 기타 기록 출력은 디버거 로그 파일에 기록됩니다.

추적. 파일 실행

추적. 실행 파일은 파일>시작 디버깅>추적 파일을 사용하여 기록된 후에 열 수 있습니다.

'추적 파일 열기' 옵션이 강조 표시된 파일 열기 옵션의 스크린샷

모든 추적 출력 파일은 기본적으로 사용자 문서 폴더에 저장됩니다. 예를 들어 User1의 경우 TTD 파일은 여기에 저장됩니다.

C:\Users\User1\Documents

기록하기 시작할 때 추적 파일의 위치를 변경할 수 있습니다. 자세한 내용은 시간 이동 디버깅 - 기록을 참조하세요.

가장 최근에 사용한 파일 목록을 사용하면 이전에 사용한 대상 구성 파일에 빠르게 액세스할 수 있습니다. 최근에 사용한 추적 파일 또는 덤프 파일도 나열됩니다.

최근에 사용한 .run 추적 파일 5개가 표시된 파일 열기 목록의 스크린샷

인덱스. IDX 파일

인덱스 . 연결된 추적에 대한 IDX 파일이 만들어집니다. WinDbg에서 추적 파일을 열 때 파일을 자동으로 실행합니다. !index 명령을 사용하여 인덱스 파일을 수동으로 만들 수 있습니다. 인덱스를 사용하면 추적 정보에 더 빠르게 액세스할 수 있습니다.

IDX 파일은 대개 크기가 2배인 크기일 수도 있습니다. 실행 파일입니다.

를 다시 만듭니다. IDX 파일

를 다시 만들 수 있습니다. 의 IDX 파일입니다. 명령을 사용하여 파일을 실행합니다 !index . 자세한 내용은 시간 이동 디버깅 - !index(시간 이동)를 참조하세요.

0:0:001> !index
Indexed 3/3 keyframes
Successfully created the index in 49ms.

TTD 추적 공유. 파일 실행

TTD는 로컬 전용이며 다른 컴퓨터에 원격으로 연결되어 작동하지 않습니다.

TTD 추적 파일을 복사하여 다른 사용자와 공유할 수 있습니다. 실행 파일입니다. 이는 동료가 문제를 파악하는 데 도움이 되도록 하는 데 유용할 수 있습니다. 충돌하는 앱을 설치하거나 다른 관련 설정을 수행하여 문제를 재현할 필요가 없습니다. 추적 파일을 로드하고 PC에 설치된 것처럼 앱을 디버그할 수 있습니다.

TTD 추적을 재생하는 컴퓨터는 레코드 컴퓨터에서 사용된 모든 명령(예: AVX 명령)을 지원해야 합니다.

파일 이름을 변경하여 날짜 또는 버그 번호와 같은 추가 정보를 포함할 수 있습니다.

Tthe. 위에서 설명한 대로 !index 명령을 사용하여 다시 만들 수 있으므로 IDX 파일을 복사할 필요가 없습니다.

다른 사용자와 공동 작업할 때 현재 문제와 관련된 모든 관련 추적 위치를 전달합니다. 공동 작업자는 명령을 사용하여 !tt x:y 코드 실행 시 정확한 시점으로 이동할 수 있습니다. 시간 위치 범위를 버그 설명에 포함하여 가능한 문제가 발생할 수 있는 위치를 추적할 수 있습니다.

오류 - 로그 파일

기록 오류 및 기타 기록 출력은 디버거 로그 파일에 기록됩니다. 로그 파일을 보려면 로그 보기를>선택합니다.

이 예제에서는 C:\Windows 디렉터리에 없는 Foo.exe 실행 파일을 시작하고 기록하려고 할 때 오류 로그 텍스트를 보여 줍니다.

2017-09-21:17:18:10:320 : Information : DbgXUI.dll : TTD: Output: 
Microsoft (R) TTD 1.01.02
Release: 10.0.16366.1000
Copyright (C) Microsoft Corporation. All rights reserved.
Launching C:\Windows\Foo.exe
2017-09-21:17:18:10:320 : Error : DbgXUI.dll : TTD: Errors: 
Error: Trace of C:\Windows\Foo.exe PID:0 did not complete successfully: status:27
Error: Could not open 'Foo.exe'; file not found.
Error: Corrupted trace dumped to C:\Users\User1\Documents\Foo01.run.err.

추적 파일 크기

TTD 추적 파일은 정말 커질 수 있으며 사용 가능한 디스크 공간이 충분한지 확인하는 것이 중요합니다. 몇 분 동안만 앱 또는 프로세스를 기록하는 경우 추적 파일의 크기가 몇 기가바이트로 증가할 수 있습니다. 추적 파일의 크기는 아래에 설명된 여러 요인에 따라 달라집니다.

TTD는 복잡한 장기 실행 시나리오를 허용하도록 추적 파일의 최대 크기를 설정하지 않습니다. 문제를 신속하게 다시 만들면 추적 파일 크기를 가능한 한 작게 유지합니다.

추적 파일 크기 요소

추적 파일 크기를 정확히 예측할 수는 없지만 TTD 파일 크기를 이해하는 데 도움이 되는 몇 가지 규칙이 있습니다.

다음 요소는 추적 파일의 크기에 영향을 줄 수 있습니다.

  • 실행 중인 앱 또는 프로세스를 기록할 때 모든 스레드에서 실행되는 코드 명령 수
  • 앱 또는 프로세스가 기록된 기간(기록된 코드 명령 수에만 영향을 주기 때문에)
  • 앱 또는 프로세스에서 사용하는 메모리 데이터의 크기

실행 및 기록된 명령 수가 추적 파일 크기에 영향을 주는 가장 큰 요소입니다. 추적에는 일반적으로 실행된 명령당 1비트에서 1 바이트 사이가 필요합니다. 추적은 기록된 프로그램이 더 적은 수의 고유 함수를 실행하고 더 작은 데이터 집합에서 작동하는 경우 해당 범위의 아래쪽 끝으로 향할 수 있습니다. 추적은 기록된 프로그램이 더 많은 수의 고유 함수를 실행하거나 더 큰 데이터 집합에서 작동하는 경우 해당 범위의 더 높은 끝으로 향할 수 있습니다.

Thumb의 추적 파일 크기 규칙

추적 파일은 위에서 식별한 추적 파일 크기 요소에 따라 활성 앱 또는 프로세스를 기록할 때 초당 약 5MB에서 50MB로 증가합니다.

기록 중인 앱 또는 프로세스가 유휴 상태일 때(예: 입력을 기다리는 경우) 추적 파일은 증가하지 않습니다.

현재 추적 파일에 대한 최대 파일 크기 제한은 없습니다. WinDbg는 수백 기가바이트 크기의 추적 파일을 재생할 수 있습니다.

인덱스 파일 크기

인덱스 파일은 처음으로 추적을 열 때 WinDbg에서 자동으로 생성됩니다. 디버거가 추적을 재생하고 메모리에 대한 정보를 보다 효율적으로 쿼리하는 데 도움이 되는 정보가 포함되어 있습니다. 크기는 일반적으로 추적 파일 크기의 1~2배입니다. 해당 크기에 영향을 주는 요소는 추적 파일의 크기에 영향을 주는 요소와 비슷합니다.

첫째, 인덱스 파일의 크기는 추적 길이를 기준으로 크기가 조정됩니다. 더 많은 수의 기록된 명령이 포함된 추적에는 일반적으로 더 큰 인덱스가 있습니다.

둘째, 인덱스의 크기는 메모리 액세스의 폭을 기준으로 크기가 조정됩니다. 기록된 프로그램이 많은 수의 고유 메모리 위치에 자주 액세스하는 경우 인덱스는 일반적으로 기록된 프로그램이 더 적은 고유 메모리 위치에 액세스하거나 메모리 위치에 대한 액세스 빈도가 낮은 경우보다 커집니다.

이러한 요소는 추적 파일의 크기에 영향을 주는 요소와 유사하므로 인덱스 파일의 크기는 일반적으로 인덱스 파일의 크기에 따라 크기가 조정됩니다(따라서 일반적으로 추적 파일의 크기는 1x에서 2배 사이인 것으로 추정됨).

디스크 공간이 부족하면 어떻게 하나요?

TTD 추적 및 인덱스 파일은 모두 디스크에 기록됩니다. 현재 추적 또는 인덱스 파일에 대한 최대 파일 크기 제한은 없습니다. 추적 파일의 크기는 기록을 중지하거나 사용 가능한 디스크 공간의 양을 초과할 때까지 증가합니다.

녹화 중: TTD는 추적 파일에 마지막 페이지를 작성한 다음 다시 쓸 수 있을 때까지 효과적으로 기다립니다. WinDbg는 기록 대화 상자를 계속 표시하지만 녹화하는 동안 디스크 공간이 부족할 때 오류/경고 메시지를 표시하지 않습니다.

녹음하는 동안 디스크 공간이 부족하면 코드 실행의 레코드가 불완전한 추적 파일이 생성됩니다. 불완전한 추적 파일은 WinDbg에서 열 수 있지만 추적 파일을 작성할 때 디스크 공간이 부족하면 오류가 발생하는 경우 실제 문제가 포함되지 않을 수 있습니다.

해결 방법: 파일 탐색기 열고 디스크(예: C: 드라이브) 여유 공간이 0에 가까운지 검사. 또는 추적(.)을 확인합니다. run) 파일은 파일 탐색기(문서 폴더의 기본값)이며 정기적으로 크기가 증가하지 않으면 녹음/녹화가 대기 중일 수 있습니다. WinDbg에서 중지 및 디버그 단추를 선택하고 공간을 확보하거나 다른 디스크에 저장한 다음 다시 기록을 시작합니다.

인덱싱 중: 디버거가 잘못된 인덱스 파일을 생성하여 디버거에서 예측할 수 없는 동작이 발생하거나 디버거 엔진 호스트가 충돌할 수 있습니다.

해결 방법: 디버거를 닫고 추적에 존재할 수 있는 인덱스 파일(.idx)을 삭제합니다. 충분한 디스크 공간을 확보하거나 충분한 여유 공간이 있는 다른 디스크로 추적 파일을 이동합니다. 디버거에서 추적을 다시 열고 !index를 실행하여 올바른 새 인덱스 만들기 인덱싱은 원래 추적 파일(.run)을 수정하지 않으므로 데이터가 손실되지 않습니다.

참고 항목

시간 이동 디버깅 - 개요