다음을 통해 공유


시간 이동 디버깅 릴리스 정보

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

이 항목에서는 시간 이동 디버깅의 새로운 기능을 설명합니다.

1.11.429

이 TTD 업데이트에는 안정성을 개선하기 위한 몇 가지 내부 변경 내용과 함께 몇 가지 버그 수정이 포함되어 있습니다.

참고: 1.11.410은 Intel/AMD LODSD 명령의 에뮬레이션에 회귀를 도입했습니다. 이에 대한 수정 사항은 다음 릴리스에서 제공됩니다.

수정 사항:

  • 패킷 읽기 견고성 및 기타 잘못된 변경 내용을 개선하여 안정성을 향상시킵니다.
  • AVX VBROADCAST[I/F]128 명령을 에뮬레이트하는 회귀를 수정합니다.
  • 최신 Windows 빌드의 ARM64에서 예외 레코드 액세스를 수정합니다.

1.11.410

접근성 향상: 이제 텍스트 크기가 변경되어 진행률 UI가 제대로 조정됩니다.

@$cursession.TTD.Calls() 이제 디버거의 명령은 많은 수의 함수와 일치하는 와일드카드를 지원합니다. 이제 많은 수의 함수(@$cursession.TTD.Calls("kernel32!*"))를 쿼리할 수 있습니다.

자동화: 새 -onMonitorReadyEvent 명령줄 옵션은 기록 모니터(-monitor 스위치)가 새 프로세스를 기록할 준비가 된 시기를 나타냅니다.

수정 사항:

  • 레코더를 초기화하는 동안 일부 경합 상태를 수정합니다.
  • 중단점이 올바르게 작동할 수 있도록 syscall을 기록하는 방법을 수정합니다.
  • 모듈 선택적 기록과 관련된 여러 문제를 해결합니다.

ARM64 수정 사항:

  • 일반 ARM64v8.0 수준 CPU에서 TTD 기록을 방지하는 버그가 수정되었습니다.
  • ARM64에서 x86 또는 x64 프로세스의 추적을 사용하려고 할 때 메시징이 향상되었습니다.

AMD/Intel 수정(Google에서 보고한 일부 문제 포함):

  • LODS의 잘못된 에뮬레이션 수정: 사용되지 않는 RAX 비트를 0으로 유지하는 대신 이제 올바르게 보존됩니다.
  • x86/x64 프로세스에서 "pop ax" 명령의 에뮬레이션이 수정되었습니다. 전체 레지스터의 상위 비트를 잘못 0으로 표시했습니다(예: "pop ax"가 rax의 상위 비트를 지웠다).
  • XGETBV 명령의 직접 에뮬레이션(더 빠름)
  • 모든 AVX512 SIMD 이동의 직접 에뮬레이션(더 빠름)

1.11.316

중단 없는 긴 데이터 사용 명령 시퀀스로 프로그램을 기록할 때 가끔 충돌이 발생하는 회귀를 수정했습니다.

ARM64 수정 사항:

  • 이제 PAC 기능을 사용하도록 설정된 ARM64 프로세스의 녹음이 지원됩니다.
  • 캐리 및 오버플로 플래그를 지우지 못하는 ANDS 및 TST 지침을 수정했습니다.

AMD/Intel 수정 사항:

  • TTD가 "xchg r8,rax" 및 "xchg r8w,ax"를 NOP로 잘못 에뮬레이트하는 버그가 수정되었습니다.

1.11.304

이제 TTD는 라이브 기록 프로세스 내에서 레코더를 제어하기 위해 공개적으로 API를 구현하고 게시합니다. 설명서 및 샘플은 GitHub에서 찾을 수 있습니다.

이제 TTD는 새 -recordMode 스위치를 사용하여 녹음이 꺼진 상태에서 삽입할 수 있습니다. 기본적으로 TTD는 모든 스레드를 기록하도록 하는 용도를 사용합니다 -recordMode Automatic . 지정된 경우 -recordMode Manual TTD는 대상 프로세스에 삽입하지만 API 호출을 통해 이를 수행하라는 지시를 할 때까지 아무 것도 기록하지 않습니다.

이제 스위치를 사용하여 -module 특정 모듈 집합으로 기록을 제한할 수 있습니다. 일부 시나리오에서는 이로 인해 훨씬 더 빠른 기록 및 더 작은 추적 파일이 발생할 수 있습니다. 둘 -module 이상의 스위치를 지정할 수 있습니다.

이제 일치하는 레코드 및 재생 구성 요소가 배포에 포함됩니다. 디버거와 명령줄 레코더 간의 비호환성 또는 재생 버그가 있는 경우 새 디버거가 릴리스될 때까지 재생 구성 요소를 디버거 설치에 복사하여 해결 방법으로 복사할 수 있습니다.

설치된 파일 위치는 다음을 수행하여 Powershell에서 찾을 수 있습니다.

ls (Get-AppxPackage | where Name -eq 'Microsoft.TimeTravelDebugging').InstallLocation

추가됨

  • 자동 기록 없이 삽입을 사용하도록 -recordmode 스위치 추가(1.11.296)
  • -module 스위치를 추가하고 SR 구성을 만드는 데 사용(1.11.291)
  • In-Process API에서 데이터 모델로 기록된 프로젝트 사용자 지정 데이터(1.11.286)
  • 새 TTDLiveRecorder.dll 추가하고 TTDRecordCPU.dll 함께 연결합니다(1.11.283).
  • MSIX에 재생 구성 요소 추가 및 SDK 조회 수정(1.11.265)

Changed

없음

고정

알려진 문제

  • ARM64에서 컴파일러는 많은 고주파 함수를 테일 호출하지 못하므로 극단적인 경우 레코더의 스택 공간 부족과 크래시가 발생할 수 있습니다.

1.11.261

이 릴리스의 주목할 만한 변경 사항은 다음과 같습니다.

  • [ARM64] 대상 레지스터가 SXTL원본으로 사용되는 경우 , SQXTN2, XTN2 SQXTUN2UQXTN2TRN1 지침의 동작을 수정했습니다.
  • [ARM64] 디버거에서 하위 64비트가 높은 64비트로 중복된 SIMD 레지스터를 표시하는 문제를 해결했습니다.
  • [AMD64] AMD의 Zen4 프로세서에 대한 AVX512 에뮬레이션 수정(레지스터가 손상됨).

Changed

  • 에뮬레이터에 대한 새 버전 관리 시스템을 구현합니다. (1.11.260)

고정

  • 대상 레지스터가 원본으로도 사용되는 잘못된 ARM64 지침을 수정합니다. (1.11.261)
  • 에뮬레이터에 대한 직접 반환에 대한 Zen4 해결 방법을 수정합니다. (1.11.222)

1.11.202

이 릴리스는 스위치를 통해 -monitor 서비스 또는 모니터링 프로세스 시작을 기록하는 동안 발생하는 여러 문제를 해결합니다. 또한 제품에서 ARM32 녹음/녹화 지원을 제거합니다.

Changed

  • TTD 구성 요소를 UCRT에 DLL로 연결하여 이진 크기를 줄입니다. (1.11.191)

고정

  • 서비스 기록을 수정합니다. (1.11.193)
  • -monitor를 사용할 때 몇 가지 문제를 해결합니다. (1.11.189)
  • x64에서 대체를 실행할 때 비휘발성 값을 유지하는 함수의 스택 프레임 수정(1.11.188)
  • TTD에 대해 다시 사용하도록 설정된 출력 버퍼링(1.11.187)
  • ProcessMonitorServer에서 GPO 핸들 처리 수정(1.11.179)

제거됨

  • 리포지토리에서 ARM32 녹음/녹화 코드 제거(1.11.198)

1.11.173

이 릴리스는 .out 파일에서 추출하여 콘솔에 인쇄하여 특정 오류 메시지의 가시성을 높입니다. 또한 추적 재생 중에 드문 충돌을 수정합니다.

Changed

  • .out 파일에서 오류 메시지 추출 및 인쇄(1.11.173)

고정

  • 별도의 프로세스에서 .out 파일을 읽는 동안 파일 충돌을 해결합니다. (1.11.171)
  • 추적 재생 중에 드물게 발생하는 충돌을 수정합니다. (1.11.166)

1.11.163

이 릴리스에서는 x64 컴퓨터에서 x86 프로세스를 기록하기 위한 지원을 추가합니다.

Changed

  • x64 TTD 설치를 사용하여 x86 녹음/녹화 수정(1.11.163)

고정

  • EULA 정리(1.11.161)

1.11.159

이 릴리스는 명령줄 레코더의 첫 번째 공개 릴리스입니다. 명령줄 레코더의 공개 릴리스를 사용하도록 설정하는 데 필요한 몇 가지 변경 내용과 함께 이 릴리스에는 CPU 에뮬레이터에 대한 몇 가지 수정 사항을 포함하여 여러 버그 수정이 포함되어 있습니다.

-timestampFileName 스위치를 사용하면 타임스탬프 기반 .run 파일을 생성할 수 있습니다. 이 기능은 동일한 프로세스의 여러 인스턴스를 기록하고 시작 시간을 최소화하려는 경우에 유용합니다.

Changed

  • 사용되는 추적기를 기반으로 런타임 시 기본 삽입 모드 선택(1.11.156)
  • 타임스탬프 기반 .run 파일 생성을 사용하도록 스위치 추가(1.11.155)
  • EULA 및 -accepteula TTD에 추가(1.11.154)
  • MSIX에 ProcLaunchMon.sys 추가(1.11.153)
  • 아치별 MSIX 및 MSIXBUNDLE 만들기(1.11.152)
  • Clang로 빌드된 TTD를 테스트할 때 발생한 여러 가지 문제를 해결합니다. (1.11.146)
  • TTDAnalyze에 대한 Clang 수정(1.11.144)

고정

  • appinstaller/공개 릴리스에 대한 피드백 검토(1.11.159)
  • RC 피드백(1.11.157)
  • 싱크를 가리키도록 RegisterInfo를 초기화하여 0 레지스터를 휴지통 처리하지 마세요. (1.11.149)
  • TST 명령을 즉시 수정하고 단위 테스트를 개선하여 이를 처리하는 등의 작업을 수행합니다. (1.11.148)
  • 보호된 프로세스 결정을 통합하고 보호된 프로세스 사용을 사용하지 않도록 설정(1.11.147)

1.11.138

Changed

  • 레코더 MSIX 만들기(1.11.138)
  • Clang가 TTD를 빌드할 수 있도록 모든 문제를 해결합니다. (1.11.137)
  • 시작 시 프로세스를 기록하는 방법으로 -monitor X 도입(1.11.116)

고정

  • "CMP ZR" ARM64 에뮬레이션 수정(1.11.128)
  • AMD의 Zen4 프로세서에서 AVX512 에뮬레이션 수정(1.11.127)
  • TTD가 특정 CPU에 대한 파일을 찾는 데 사용하는 메커니즘 수정(1.11.121)
  • x86 TTD 회귀 수정(TTDRecordCPU.dll 로드 실패) (1.11.110)
  • X28을 휴지통하지 않도록 ARM64의 네이티브 경로로의 반환 수정(1.11.109)

참고 항목

시간 이동 디버깅 – 개요

시간 이동 디버깅 – 명령줄 레코더