다음을 통해 공유


시간 이동 디버깅 - 문제 해결

시계가 포함된 시간 이동 디버깅 로고입니다.

이 섹션에서는 시간 이동 추적 문제를 해결하는 방법을 설명합니다.

프로세스 기록 시도 문제

"시간 이동 디버깅을 지원하려면 WinDbg를 관리자 권한으로 실행해야 함"이라는 오류 메시지가 표시됩니다.

메시지에서 알 수 있듯이 디버거 관리자 권한 실행이 요구 사항입니다. 관리자 권한 디버거를 실행하려면 시작 메뉴에서 WinDbg 아이콘을 마우스 오른쪽 단추로 클릭한 다음관리자 권한으로추가> 실행을 선택합니다.

관리자 권한이 없는 계정으로 WinDbg를 설치했는데 "WinDbg를 시간 이동 디버깅을 지원하려면 관리자 권한으로 실행해야 함"이라는 오류 메시지가 표시됩니다.

관리자 권한이 있는 계정을 사용하여 WinDbg를 다시 설치하고 디버거에서 기록할 때 해당 계정을 사용합니다.

UWP 애플리케이션을 시작하고 기록할 수 없습니다.

현재는 지원되지 않지만 이미 실행 중인 UWP 애플리케이션에 연결하고 기록할 수 있습니다.

다른 세션, 보안 컨텍스트, 자격 증명... 프로세스에서 실행되는 비정상적인 프로세스 유형의 삽입 이름을 기록<할 수 없습니다.>

현재 TTD는 명령 콘솔에서 또는 Windows Explorer 실행 파일 또는 바로 가기를 클릭하여 일반적으로 시작할 수 있는 일반 프로세스만 기록합니다.

내 컴퓨터에 애플리케이션을 성공적으로 기록할 수 없습니다.

애플리케이션 기록에 실패하면 간단한 Windows 프로세스를 기록할 수 있는지 확인합니다. 예를 들어 "ping.exe" 또는 "cmd.exe"은 일반적으로 기록할 수 있는 간단한 프로세스입니다.

컴퓨터에 아무 것도 기록할 수 없습니다.

TTD 녹음/녹화는 애플리케이션 가상화 프레임워크, 정보 관리 제품, 보안 소프트웨어 또는 바이러스 백신 제품과 같은 다른 침입 기술을 방해할 수 있는 침입 기술입니다.

알려진 TTD 비호환에 대한 자세한 내용은 시간 이동 디버깅 - 개요 에서 "살펴볼 항목"을 참조하세요.

애플리케이션을 추적하고 동시에 AppVerifier를 실행하고 있으며 추적을 재생할 때 성능이 느립니다.

AppVerifier가 메모리를 사용하여 애플리케이션을 검사 때문에 나중에 추적을 재생할 때의 환경이 AppVerifier가 없는 것보다 눈에 띄게 더 나빠질 수 있습니다. 성능을 향상시키려면 앱을 기록할 때 AppVerifier를 사용하지 않도록 설정합니다. 이것이 불가능한 경우 성능을 향상시키기 위해 WinDbg에서 호출 스택 창을 닫아야 할 수 있습니다.

와 관련된 문제입니다. IDX 인덱스 파일

인덱스 파일이 없거나 손상되었거나 불완전한 인덱스 파일을 사용하여 추적 파일을 디버깅할 수 있지만 권장되지는 않습니다. 인덱스 파일은 디버그된 프로세스에서 읽은 메모리 값이 가장 정확한지 확인하고 다른 모든 디버깅 작업의 효율성을 높이는 데 필요합니다.

!index -status 명령을 사용하여 의 상태를 검사합니다. 와 연결된 IDX 인덱스 파일입니다. 추적 파일을 실행합니다.

이 경우 를 실행 !index -force하여 인덱스 파일을 다시 만들 수 있습니다.

를 다시 만듭니다. IDX 인덱스 파일

인덱스 파일이 의심되고 문제가 발생하거나 !index -status "인덱스 파일이 로드됨" 이외의 항목이 있으면 다시 만듭니다. 이렇게 하려면 를 실행할 !index -force수 있습니다. 실패하는 경우:

  1. 디버거를 닫습니다.
  2. 기존 IDX 파일을 삭제하면 이름이 와 같습니다. 추적 파일을 실행하고 와 동일한 디렉터리에 있습니다. RUN 파일은 입니다.
  3. 추적 을 엽니다. WinDbg에서 파일을 실행합니다. 그러면 명령을 실행 !index 하여 인덱스 다시 만듭니다.
  4. !index -status 명령을 사용하여 추적 인덱스가 작동하고 있는지 확인합니다.

추적 파일이 있는 동일한 위치에 인덱스 파일에 충분한 공간이 있는지 확인합니다. 기록 내용에 따라 인덱스 파일은 추적 파일보다 훨씬 클 수 있으며 일반적으로 두 배의 순서로 표시될 수 있습니다.

추적 관련 문제. 파일 실행

추적 에 문제가 있는 경우 파일을 실행하면 다음과 같은 오류 메시지가 표시될 수 있습니다.

Replay and log are out of sync at fallback data. Packet type is incorrect "Packet Type"
Replay and log are out of sync at opaque data. Log had already reached the end
Replay exit thread event does not match up with logged event
Logged debug write values are out of sync with replay

대부분의 경우 모든 오류 메시지는 을 나타냅니다. 실행 추적 파일은 사용할 수 없으며 다시 기록해야 합니다.

사용자 모드 앱 다시 기록

사용자 모드 앱을 기록하는 데 특정 문제가 있는 경우 동일한 PC에서 다른 앱을 기록하거나 다른 PC에서 동일한 앱을 사용해 볼 수 있습니다. 앱의 특정 부분을 기록하는 데 특정 문제가 있는지 확인하기 위해 앱의 다른 사용을 시도하고 기록할 수 있습니다.

인덱스 디버깅 또는 만들 때 "탈선 이벤트"에 대한 메시지가 표시됩니다.

다음과 같은 메시지가 표시 될 수 있습니다.

Derailment event MissingDataDerailment(7) on UTID 2, position 2A550B:108 with PC 0x7FFE5EEB4448 Request address: 0x600020, size: 32

TTD는 디버거 내에서 에뮬레이터를 실행하여 작동합니다. 이 에뮬레이터는 기록의 모든 위치에서 해당 프로세스의 상태를 복제하기 위해 디버그된 프로세스의 지침을 실행합니다. 탈선은 이 에뮬레이터가 결과 상태와 추적 파일에 있는 정보 간의 불일치를 관찰할 때 발생합니다. 위에서 인용한 오류는 instance 경우 추적의 위치 0x7FFE5EEB4448 위치 2A550B:108에서 발견된 명령을 참조하며, 기록에서 존재하지 않는 위치 0x600020 주변의 일부 메모리를 읽으려고 했습니다.

탈선은 종종 추적에서 다시 기록된 일부 명령에서 레코더의 일부 오류 또는 에뮬레이터의 오류로 인해 발생합니다.

대부분의 경우 이 오류 메시지는 을 나타냅니다. RUN 추적 파일은 일부 확정되지 않은 수의 지침에 대해 탈선된 지점에서 시작하여 탈선된 스레드의 간격을 갖습니다. 해당 간격 동안 디버그하려는 관심 이벤트가 발생하지 않은 경우 추적을 사용할 수 있습니다. 해당 간격 동안 관심 이벤트가 발생한 경우 추적을 다시 기록해야 합니다.

참고 항목

시간 이동 디버깅 - 개요