다음을 통해 공유


릴리스 정보

돋보기 검사 비트가 있는 WinDbg 로고입니다.

이 항목에서는 WinDbg의 새로운 기능을 설명합니다. 이전 버전은 WinDbg 미리 보기릴리스되었습니다.

1.2402.24001.0

새로운 기능

라이브 Linux 디버깅

이제 Linux 프로세스를 라이브 디버그할 수 있습니다. 자세한 내용은 다음 항목을 참조하세요.

Linux 라이브 원격 프로세스 디버깅

Linux 기호 및 원본

WinDbg는 Linux에서 실행되지 않으므로 당분간 WinDbg 클라이언트에는 Windows가 필요합니다.

시간 이동 디버깅을 사용하여 실행 하위 집합 기록

이제 TTD를 관심 있는 모듈에 집중하도록 기록할 모듈 목록을 지정할 수 있습니다. 이렇게 하면 기록 오버헤드를 크게 줄일 수 있습니다. 이를 사용하려면 "구성 및 레코드" 대화 상자에서 "실행의 하위 집합 기록"을 검사 다음 기록하려는 모듈을 지정합니다. (아래 알려진 문제 참조).

더 세부적인 제어를 위해 새 In-Process 기록 API를 사용하여 프로그램을 정확하게 기록할 수 있습니다. 샘플 코드설명서를 사용하여 방법을 알아보세요.

압축 레지스터 창

새 레지스터 창은 명령의 출력 r 과 비슷합니다. 새 레지스터 창에서 편집은 아직 지원되지 않습니다.

메모리 명령에 대한 e 새 매개 변수(값 입력)

e 이제 메모리에 값 입력 명령은 (메모리 표시) 명령과 마찬가지로 d 실제 주소를 지원합니다. 이러한 옵션은 커널 모드에서만 지원됩니다.

옵션 설명
/p 디스플레이에 실제 메모리 주소를 사용합니다. 범위로 지정된 범위는 가상 메모리가 아닌 실제 메모리에서 가져옵니다.
/p[c] 캐시된 메모리를 읽는다는 점을 제외하고는 동일합니다 /p. c 주위의 대괄호를 포함해야 합니다.
/p[uc] 캐시되지 않은 메모리를 읽는다는 점을 제외하고는 동일합니다 /p. uc 주위의 대괄호를 포함해야 합니다.
/p[wc] /p쓰기 결합 메모리를 읽는다는 점을 제외하고와 동일합니다. wc 주변의 대괄호를 포함해야 합니다.

자세한 내용은 e, ea, eb, ed, eD, ef, ep, eq, eu, ew, eza(값 입력)를 참조하세요.

버그 수정

  • Linux 디버깅에서 Rust 이름 demangling 지원
  • CLR 디버깅의 향상된 기능
    • CLR 프레임을 걷는 혼합 모드 스택을 강제 적용하는 기능 추가
      • 또는 에 추가된 config.xmlDbgX.xml설정이 추가되었습니다ForceMixedModeStackWalker.
      • 일회성 조사에 대한 명령이 추가 !forceclrmixedmodeunwind 되거나 구성 설정을 변경할 수 없는 경우
  • Linux에서 CLR 디버깅의 일반적인 개선 사항
  • LinuxKernel.js 및 cpu당 변수와 관련된 여러 문제 해결
    • cpu당 커널 스케줄러 실행 큐를 덤프할 수 있도록 LinuxKernel.js 명령이 추가 !runq 되었습니다(Linux 크래시 유틸리티의 runq 명령과 유사한 형태임).
    • 커널 변경에 해당하도록 LinuxKernel.js 다양한 명령이 수정되었습니다. 최신 커널에서 타이머 트리는 원시 RB 노드 대신 캐시된 RB 노드를 사용합니다. 최근 커널에서 all_bdevs 목록이 사라지므로 블록 디바이스가 이제 슈퍼 블록에서 대신 걸어갑니다(blockdev_superblock).
  • Visual Studio의 최신 버전처럼 작동하기 위한 다양한 natvis 수정
  • sourcelink 및 레거시 sourceinfo를 선호합니다.
    • pdb에서 소스 링크 스트림을 표시하는 명령이 추가 !lmsourcesinfo <module> 되었습니다(sourcelink 관련 디버깅 문제를 지원하기 위해).

알려진 문제

TTD를 사용하여 기록할 모듈 목록을 지정하는 경우 이 릴리스에서는 둘 이상의 모듈을 지정하는 것이 작동하지 않습니다.

1.2308.2002.0

많은 버그 수정 및 작은 개선 사항.

1.2306.12001.0

많은 버그 수정 및 작은 개선 사항.

1.2303.30001.0

참고 항목

디버거의 이름이 WinDbg 미리 보기에서 WinDbg변경되었습니다.

Windows용 디버깅 도구와 함께 릴리스된 레거시 디버거는 WinDbg(클래식)참조됩니다.

ARM64의 시간 이동 디버깅

WinDbg는 ARM64에서 기본적으로 실행될 뿐만 아니라 네이티브 ARM64 프로세스의 TTD(Time Travel Debugging)도 사용하도록 설정했습니다. 이제 네이티브 ARM64 프로세스(및 x86 및 ARM32 프로세스)를 기록하고 x64 컴퓨터에서도 쉽게 디버그할 수 있습니다. ARM64 디바이스에서 x64 또는 x64 지원(ARM64EC) 프로세스에 대한 지원은 아직 제공되지 않습니다.

일반적인 SIMD 지침을 사용하는 프로세스의 기록 오버헤드가 크게 감소하면서 전반적인 TTD 성능도 개선되었습니다. MMX부터 SSE 4.2, AVX 및 AVX2까지 총 65개의 새로운 지침이 최적화되었습니다.

모호한 중단점 확인

모호한 중단점을 사용하면 디버거가 중단점 식이 여러 위치로 확인되는 특정 시나리오에서 중단점을 설정할 수 있습니다. 자세한 내용은 모호한 중단점 확인을 참조 하세요.

1.2107.13001.0

이제 WinDbg 미리 보기 검색에는 정규식인 Regex를 사용하여 검색하는 옵션이 포함됩니다. Ctrl+F를 수행하여 검색하려는 창에서 Regex를 사용하도록 설정한 다음 검색 상자 옆에 레이블이 지정된 .* 단추를 전환합니다.

제한된 모드

제한된 모드는 WinDbg Preview에서 원격 디버깅 세션을 시작하고 파일만 덤프할 수 있는 디버깅 세션의 유형을 제한할 수 있는 선택적 설정입니다. 자세한 내용은 WinDbg - 제한된 모드를 참조하세요.

그림자 변수 지원

이전 버전에서 WinDbg는 범위의 다른 변수와 이름을 공유하는 변수를 평가(??) 또는 표시(dx)하려고 할 때 "모호한 기호" 오류를 throw합니다. 이제 Windbg는 변수 이름에 추가하여 동일한 이름을 공유하는 변수를 구분합니다 @n . 예: foo@0, foo@1

이 변경 내용은 로컬 창에도 반영됩니다. 이전에는 범위에서 가장 가까운 변수만 표시됩니다.

1.2104.13002.0

WinDbg 미리 보기의 편리한 생산성 기능은 명령 창에서 패턴을 검색하는 기능입니다. 이렇게 하려면 텍스트를 선택하고 해당 텍스트의 다른 모든 인스턴스를 강조 표시합니다. 이 강조 표시는 메모리 패턴을 살펴볼 때 유용하기 때문에 이제 숫자가 16진수, 10진수 또는 과학적 표기법으로 형식이 지정되는 방식에 관계없이 다른 반지름의 해당 숫자도 강조 표시합니다. 번호 매기기 체계에 대한 자세한 내용은 n(숫자 기준 설정)을 참조하세요.

예시:

선택할 0x000001e2fb3f6160때 형식에 관계없이 다른 모든 인스턴스가 강조 표시됩니다.

여러 숫자 형식이 강조 표시된 WinDbg 명령 창의 스크린샷

이 기능은 반 임시 강조 표시에서도 작동합니다. Ctrl+ 숫자를 두 번 클릭하여 모든 인스턴스를 강조 표시합니다. 이러한 방식으로 명령 기록 전체에서 여러 개의 중요한 숫자를 추적할 수 있습니다(강조 표시를 지우려면 Ctrl+ 숫자를 다시 두 번 클릭). 마지막으로 이 기능은 Ctrl+ F를 사용하여 숫자를 검색할 때도 작동합니다.

소스 코드 확장 액세스

원본 경로 명령 .srcpath, .lsrcpath(원본 경로 설정) 가 새 태그인 DebugInfoD를 포함하도록 업데이트되었습니다. 자세한 내용은 소스 코드 확장 액세스를 참조 하세요.

데이터 모델에서 WOW 프로세스의 호스트 및 게스트 상태

64비트 컨텍스트에서 32비트 WOW 프로세스를 디버깅할 때 사용자는 이제 데이터 모델 내에서 호스트 및 게스트 상태 모두에 액세스할 수 있습니다.

32비트 게스트 상태 예제:

dx @$curprocess.Environment

dx @$curthread.Environment

dx @$curthread.Stack

64비트 호스트 상태 예제:

dx @$curprocess.NativeEnvironment

dx @$curthread.NativeEnvironment

dx @$curthread.NativeStack

Javascript 디버깅 개선 사항

이제 UI에 로드된 Javascript는 .scriptdebug 명령을 사용하여 콘솔 내에서 직접 디버그할 수 있습니다. 자세한 내용은 JavaScript 디버거 스크립팅 - JavaScript 디버깅을 참조하세요.

접근성 개선

WinDbg Preview를 사용하면 장애가 있는 엔지니어를 포괄하는 디버거를 빌드하기 위해 지속적으로 접근성을 개선하고 있습니다. 다음과 같은 개선 사항이 수행되었습니다.

  • 이제 키보드를 통해 명령 창 링크를 클릭할 수 있습니다(Shift+Enter).
  • 기본 메뉴의 향상된 키보드 탐색
  • 리본 메뉴의 향상된 키보드 탐색
  • UI 요소의 대비 향상

Time Travel 디버거에 대한 새로운 "덮어쓰기" 데이터 액세스 형식

이제 TTD(Time Travel Debugger)는 "덮어쓰기" 데이터 액세스 형식을 제공합니다. 이제와 같은 dx @$cursession.TTD.Memory() 메모리 쿼리에는 이전 쓰기 값을 보여 주는 추가 열이 있습니다.

기타 수정 사항, 개선 사항 및 업데이트

  • 커널 디버깅 호스트와 대상이 모두 USB 3.1 컨트롤러인 경우 USB 3.1 하드웨어 문제에 대한 해결 방법을 자동으로 검색하고 적용하는 기능이 추가되었습니다.
  • 새 UI 바로 가기 추가: Ctrl + Shift + DML 링크를 클릭하면 클립보드에 복사됩니다.

1.0.2007.01003

타임라인 책갈피

위치 붙여넣기를 메모장에 수동으로 복사하는 대신 WinDbg에서 중요한 시간 이동 위치에 책갈피를 지정합니다. 책갈피를 사용하면 추적에서 다른 이벤트를 기준으로 다른 위치를 한눈에 보고 주석을 달기 쉽습니다.

책갈피에 대한 설명이 포함된 이름을 제공할 수 있습니다.

표시 인사말 앱에서 첫 번째 API 호출에 대한 예제 이름이 있는 새 책갈피 대화 상자의 스크린샷

타임라인 보기>에서 사용할 수 있는 타임라인 창을 통해 책갈피에 액세스합니다. 책갈피를 마우스로 가리키면 책갈피 이름이 표시됩니다.

세 개의 책갈피와 책갈피 이름을 표시하는 도구 설명이 있는 WinDbg 타임라인 스크린샷

책갈피를 선택하고 길게 누르거나 마우스 오른쪽 단추로 클릭하여 해당 위치로 이동하거나 책갈피의 이름을 바꾸거나 삭제할 수 있습니다.

위치, 편집 및 제거로 이동하는 옵션이 있는 책갈피 오른쪽 클릭 팝업 메뉴의 스크린샷.

모듈 창

새 창에는 모듈 및 관련 정보가 표시되며 보기 리본을 통해 사용할 수 있습니다. 표시되는 항목은 다음과 같습니다.

  • 경로 위치를 포함하는 모듈의 이름
  • 로드된 모듈의 크기(바이트)
  • 모듈이 로드되는 기본 주소
  • 파일 버전

나열된 5개의 모듈을 표시하는 WinDbg 모듈 보기 창의 스크린샷

라이브 디버깅에서 사용할 수 있는 스레드 이름/설명

이제 SetThreadDescription에서 설정된 스레드 이름은 라이브 사용자 모드 디버깅을 수행할 때 사용할 수 있습니다. 스레드 이름은 "~" 명령 또는 디버거 데이터 모델을 사용하여 사용할 수 있습니다.

0:000> ~
   0  Id: 53a0.5ffc Suspend: 1 Teb: 000000b1`db1ed000 Unfrozen "Hello world!"
   7  Id: 53a0.9114 Suspend: 1 Teb: 000000b1`db1ef000 Unfrozen
   8  Id: 53a0.2cc4 Suspend: 1 Teb: 000000b1`db1f1000 Unfrozen
   9  Id: 53a0.5c40 Suspend: 1 Teb: 000000b1`db1f3000 Unfrozen

0:000> dx @$curthread
@$curthread                 : ConsoleTestApp!ILT+25(mainCRTStartup) (00007ff7`fac7101e)  [Switch To]
    Id               : 0x5ffc
    Name             : Hello world!
    Stack
    Registers
    Environment

이식 가능한 PDB 지원

이식 가능한 PDB 지원이 추가되었습니다. 이식 가능한 PDB(프로그램 데이터베이스) 형식은 CLI(공용 언어 인프라) 언어 컴파일러에서 생성하고 디버거 및 기타 도구에서 사용하는 디버깅 정보의 인코딩을 설명합니다. 자세한 내용은 이식 가능한 PDB 기호를 참조 하세요.

기타 변경 내용 및 버그 수정

  • WinDbg는 이제 AMD64 및 Linux 커널 덤프 디버깅을 지원합니다.
  • 시간 이동 기록 향상 및 기타 수정 사항.

1.0.1912.11001

TTD 타임라인 - 예외, 중단점, 함수 호출 및 메모리 액세스와 같이 추적에서 중요한 이벤트의 시각적 표현을 표시하는 새 창을 추가했습니다. 타임라인이 자동으로 열리고 예외(있는 경우) 및 중단점이 표시됩니다. 자세한 내용은 WinDbg 미리 보기 - 타임라인을 참조 하세요.

기본 창 크롬 으로 전환 - 우리가 사용했던 사용자 지정 창 크롬은 더 예쁜 동안 주목할만한 수의 사람들에게 몇 가지 크기 조정 및 크기 조정 문제를 일으켰기 때문에 당분간 제거하기로 결정했습니다.

파일 메뉴 개선 키보드 탐색 - 이제 파일 메뉴가 키보드로 훨씬 쉽게 탐색할 수 있습니다.

기타 변경 내용 및 버그 수정

  • 이제 대상이 실행 중일 때 스택 및 지역 창이 비활성화되고 대상이 없는 경우 "지정되지 않은 오류"가 표시되지 않습니다.
  • 연결 대화 상자에 "서비스" 열을 추가하여 실행 중인 서비스를 쉽게 찾을 수 있습니다.
  • 인수를 사용하여 애플리케이션을 시작할 때 아키텍처 검색이 작동하지 않는 버그가 수정되었습니다.
  • 디스어셈블리 창은 프라이빗 기호가 로드될 때 디스어셈블리가 향상되었습니다.
  • 이제 jsprovider.dll 자동으로 로드되므로 스크립팅 리본에서 "JSProvider 로드" 단추가 제거되었습니다.

1.0.1908.30002

TTD 호출 개체 - 호출 쿼리의 향상된 기능에는 이제 매개 변수 이름, 형식 및 값이 포함됩니다. 함수 호출에 대한 추적을 쿼리할 때 완전히 형식화된 매개 변수와 해당 값을 가져와서 매개 변수로 결과를 쉽게 필터링할 수 있습니다.

Open Enclave 지원 - WinDbg 미리 보기는 이제 OE(Open Enclave) 애플리케이션을 디버그하여 자세한 내용을 확인할 수 있습니다. Open Enclave 디버깅을 참조하세요.

ELF Core 덤프 - Open Enclave 지원의 일환으로 WinDbg는 Enclave 및 Linux 애플리케이션 모두에서 ELF 코어 덤프 및 이진 파일뿐만 아니라 DWARF 기호(DWARF 5는 현재 지원되지 않음)를 열 수 있습니다. 비 Windows 애플리케이션에서 코어 덤프를 열 때 기본 창 및 명령이 모두 제대로 작동하지만 대부분의 확장 및 Windows 관련 명령은 작동하지 않습니다. ELF 및 DWARF 파일은 여기에 정의된 주요 규칙에 따라 기호 서버에서 다운로드됩니다. Enclave는 유일하게 지원되는 시나리오이지만 다른 Linux 코어 덤프 열기에 대한 피드백은 열려 있습니다.

TTD 파일 형식 변경 - 호환성을 손상시키는 TTD 추적의 파일 형식을 크게 업데이트했습니다. 이전 버전의 WinDbg Preview는 이 (및 이후) 버전의 WinDbg 미리 보기로 기록된 추적을 열 수 없지만 이 버전(및 이후 버전)은 새 추적과 이전 추적을 모두 열 수 있습니다.

기타 변경 내용

  • 이제 TTD는 인덱싱에 64비트 엔진을 사용하고 재생 시 인덱싱 및 SOS 문제가 발생할 때 잠재적인 메모리 문제를 최소화하기 위해 재생에 적절한 디버거 엔진 비트를 사용합니다.
  • 매개 변수 없이 'dx'를 실행하면 더 쉽게 검색할 수 있는 루트 네임스페이스가 표시됩니다.
  • 이제 설정 메뉴를 통해 기본 기호 및 원본 캐시 위치를 수정할 수 있습니다.
  • AVX-512 녹음/녹화에 대한 지원이 향상되었습니다(AVX-512를 기록하면 일반적인 속도 저하보다 커짐).
  • 오프라인 라이선스를 사용하도록 설정했습니다.

1.0.1905.12001

SymSetDiaSession 오류 완화 개선 - DbgHelp를 프로세스에 주입하는 애플리케이션으로 인한 오류를 완화하기 위한 지난 달 수정 사항은 일부 시나리오에서 여전히 작동하지 않았습니다. 이를 개선했으며 이 오류에 대한 피드백을 계속 모니터링할 예정입니다.

테마 컬러 사용자 지정 - 많은 시나리오에서 WinDbg의 여러 인스턴스가 열려 있어야 하며, 그 사이를 오가는 것은 혼란스러울 수 있으며 어느 것이 "올바른" 인스턴스인지 파악하는 데 시간이 걸릴 수 있습니다. 시각적으로 세션을 구분하고 세션을 보다 쉽게 교환할 수 있도록 파란색 강조 색을 변경하는 기능을 추가했습니다.

보기 리본을 선택하고 마지막 섹션에서 강조색 옵션을 선택합니다. 최근 대상에서 이후 세션이 시작되면 테마 컬러가 대상 작업 영역의 일부로 유지됩니다.

원본 토큰화 개선 - 이제 원본 창에 Rust 원본 파일 및 C++ SEH __try/__except/__finally/__leave 토큰화에 대한 기본 지원이 있습니다.

코루틴 개선 - 코루틴 지역 변수 및 특정 최적화된 변수에 대한 지원이 향상되었습니다.

기본 기호 및 원본 캐시 설정 - 디버깅 설정 아래의 설정 메뉴에 옵션을 추가하여 기호의 캐시 위치를 변경합니다. 참고 - 이 값을 비워 두면 원본 로드가 실패하는 알려진 문제가 있습니다. 향후 릴리스에서 이러한 일이 발생하지 않도록 유효성 검사를 추가할 예정입니다.

-pv 수정 - 어떤 상황에서는 -pv(비침습적 연결)가 작동하지 않을 수 있는 버그를 수정 했습니다.

1.0.1904.18001

SymSetDiaSession 오류 수정 - 몇 가지 상황에서 WinDbg 미리 보기가 시작되지 않도록 하는 오류 보고가 잠시 있었습니다. DbgHelp 버전을 로드하기 전에 프로세스에 삽입하려고 시도하는 몇 가지 외부 애플리케이션이 있습니다. 그 중 일부는 누락된 기능이 있는 DbgHelp 버전을 사용하므로 이러한 기능을 사용하려고 할 때 이 오류가 발생합니다. 이에 대한 수정 사항을 추가했으며 여전히 발생하는 시나리오가 있는지 추적합니다.

글꼴 컨트롤 - 글꼴 및 글꼴 크기를 제어하기 위한 설정을 추가했습니다. 텍스트 창(디스어셈블리, 원본, 명령 등과 같은 모노스페이스 창) 및 도구 창(로컬, 스택 등)에 대한 두 가지 설정이 있습니다. 이러한 옵션의 영향을 받지 않는 몇 가지 영역은 앞으로 업데이트될 예정입니다.

향상된 기능 강조 표시 - 명령 창에서 텍스트를 영구적으로 강조 표시하면 원본 및 노트 창의 텍스트도 강조 표시됩니다.

원본 로드 개선 사항 - 원본 파일 로드의 작동 방식을 변경했습니다. 이전에는 원본 파일을 열 때 추가 명령 실행과 같은 엔진 작업이 불가능했거나 예측할 수 없었습니다. 더 나은 병렬 처리와 원본 열기 작업의 보다 안정적인 취소를 사용하도록 로딩이 발생하는 위치를 변경했습니다.

기타 변경 내용 및 버그 수정:

  • 원본 창의 상황에 맞는 메뉴에 "디스어셈블리로 이동"이 추가되었습니다.
  • 디스어셈블리 창에 "현재 명령 따르기"에 검사 상자가 추가되었습니다.
  • 많은 텍스트를 출력할 때 명령 창이 느리게 수행되는 버그가 수정되었습니다.
  • Visual Studio와 비슷하게 페이지 위쪽 및 페이지 아래로 키가 변경되었습니다.
  • 원본 창에서 ASM 파일을 열면 이제 기본 주석, 문자열 및 지시문 강조 표시가 표시됩니다.

1.0.1812.12001

이 버전에는 이러한 업데이트가 포함됩니다.

디버거 데이터 모델 C++ 헤더 - C++를 통해 디버거 데이터 모델을 확장하기 위한 Windows SDK의 일부로 포함된 새 C++ 헤더 DbgModel.h가 있습니다. 디버거 데이터 모델 C++ 개요에서 자세한 정보를 찾을 수 있습니다. 이 릴리스에는 'dx' 명령, JavaScript 및 새 DbgModel.h 헤더를 통해 액세스할 수 있는 디버거 데이터 모델에 더 많은 "API 스타일" 기능을 추가하는 새로운 확장이 포함되어 있습니다. 이 확장은 Debugger.Utility.Code 네임스페이스를 통한 어셈블리 및 코드 실행에 대한 지식과 Debugger.Utility.FileSystem 네임스페이스를 통해 로컬 파일 시스템을 포함하도록 데이터 모델을 확장합니다.

가상 형식 확장 이 새로운 API 확장을 사용하여 GitHub 리포지토리에 새 샘플이 있습니다 https://github.com/Microsoft/WinDbg-Samples/tree/master/SyntheticTypes. 이 JavaScript 확장은 기본 C 헤더 파일을 읽고 헤더에 정의된 구조체 및 공용 구조체에 대한 가상 형식 정보를 정의합니다. 그런 다음 dx 명령을 통해 이러한 형식에 대한 형식 정보가 포함된 PDB가 있는 것처럼 메모리를 구조화할 수 있습니다.

기타 변경 내용 및 버그 수정:

  • 이제 WinDbg 미리 보기는 단계별로 실행될 때 원본 창 또는 디스어셈블리 창을 포그라운드로 가져오는 작업을 보다 지능적으로 처리합니다.
  • 커널 디버깅 시 시작 시 더 중요한 정보를 포함하도록 WinDbg Preview의 창 제목을 다시 정렬했습니다.
  • 명령 창에서 번갈아 가며 배경 대비가 약간 더 눈에 띄어야 합니다.

1.0.1810.2001

이 버전에는 이러한 업데이트가 포함됩니다.

  • 파일 메뉴 또는 홈 리본에서 액세스하는 새 설정 대화 상자입니다.
  • 이벤트 및 예외 설정 대화 상자. 이 메뉴는 디버거가 이벤트 및 예외를 처리하는 방법을 변경합니다. 'sx' 명령 또는 WinDbg의 이벤트 필터 대화 상자에 해당합니다. 홈 리본에서 설정 선택한 다음 왼쪽의 "이벤트 및 예외"를 눌러 관리합니다.
  • 성능이 향상된 TTD 인덱서가 향상되었습니다. 이렇게 하면 TTD 추적 파일을 인덱싱하는 성능이 향상되어 인덱싱 프로세스가 훨씬 빨라지고(2x-10x 사이) 인덱스 파일이 훨씬 작게 만들어집니다(~50% 작음). 성능 향상은 크기가 4GB를 초과하거나 CPU 코어가 많은 컴퓨터(8+)를 사용하는 경우 가장 두드러집니다. 새 인덱서는 매우 큰 추적(50GB 이상)을 디버그하는 것이 더 쉬워집니다.
  • 아키텍처를 지정하기 위한 새 debugArch 시작 플래그입니다. WinDbg Preview는 관리 코드 디버깅을 더 잘 지원하기 위해 대상에 대한 올바른 비트로 디버거 엔진을 시작하려고 시도합니다. 올바른 비트 수를 확인할 수 없거나 결정하는 것을 재정의할 수 있는 상황이 있습니다. -debugArch x86|amd64를 사용하여 디버거 엔진의 아키텍처를 제어합니다.

기타 변경 내용 및 버그 수정:

  • 부동 창이 열려 있는 전체 화면 디버거에 검은색 막대가 표시되는 버그가 수정되었습니다.
  • 기호 옵션이 의도치 않게 지워지는 버그가 수정되었습니다.
  • 이제 명령 기록은 최근 대상에서 시작할 때 유지됩니다.
  • 이제 데이터 모델 창에서 값을 편집할 수 있습니다.
  • 인덱싱되지 않은 TTD 추적은 이제 인덱싱되지 않음을 더 명확하게 알 수 있습니다.
  • 로컬 창의 성능 향상
  • 명령 창 로그를 파일에 저장하는 리본 단추를 추가했습니다.
  • 을(를) 추가했습니다. 기본 LINQ 메서드 집합에 대한 SelectMany(<프로젝션>)입니다.

1.0.1807.11002

이 버전에는 이러한 업데이트가 포함됩니다.

중단점 자동 저장 및 로드 작업 영역을 바꾸는 첫 번째 단계입니다. 중단점의 저장 및 로드를 사용하도록 설정하여 해당 경로를 시작합니다. 파일 메뉴의 "최근 항목" 탭에서 이전에 디버그한 항목을 시작하면 이제 해당 세션에서 중단점이 로드됩니다. 이 기능을 확장하여 세션 전체에서 더 많은 정보를 유지할 계획입니다. 하드웨어 중단점(ba) 및 스레드 및 프로세스 특정 컨텍스트 및 조건과 같은 중단점의 기타 다양한 속성은 현재 저장되지 않습니다.

사소한 변경 및 버그 수정:

  • 예외 및 이벤트 처리를 제어하기 위한 명령줄 옵션 -x, -xe, -xd, -xn 및 -xi가 추가되었습니다. 이러한 명령줄 옵션은 명령 카운터 파트처럼 동작합니다.
  • 이제 노트 창에서 굵게, 밑줄 및 기울기 서식을 지원합니다.
  • 일부 확대/축소 및 스크롤 문제가 해결되었습니다.
  • 명령, 메모리, 원본 또는 디스어셈블리 창에서 텍스트를 선택하면 선택한 텍스트의 다른 인스턴스에 대해 밝은 강조 표시가 표시됩니다.
  • 기호 로드를 중단하면 나머지 세션에 대해 기호 로드가 실패하는 버그가 수정되었습니다.
  • 이제 NatVis가 세션을 다시 시작할 때 제대로 다시 로드됩니다.

1.0.1805.17002

이 버전에는 이러한 업데이트가 포함됩니다.

새 디스어셈블리 창 - 이제 디스어셈블리 창에 다음이 포함됩니다.

  • 위로 또는 아래로 스크롤하면 가능할 때마다 디스어셈블리가 지속적으로 더 많이 로드됩니다.
  • 숫자, 코드 주소 및 opcode에 대한 구문 강조 표시
  • 코드 기호를 선택하면 디스어셈블리 창이 해당 위치로 이동합니다.
  • 숫자 위로 마우스를 가져가면 해당 숫자를 다른 베이스로 변환하는 도구 설명이 표시됩니다.
  • 함수의 시작을 나타내는 헤더입니다.

더 빠른 원본 창 - 원본 창이 더 빠르고 리소스 효율적이도록 업데이트되었습니다.

사소한 변경 및 버그 수정:

  • 기호 캐싱과 관련된 문제 해결
  • 대상이 중단되지 않을 때 토글 초기 중단을 사용할 수 없는 일부 경우를 해결했습니다.
  • 사용할 수 있는 항목이 없는 명령 창에서 탭을 클릭하면 커서가 입력 필드에 유지됩니다.
  • 이제 WINDbg 미리 보기에서 CAB 파일을 열 때 비트가 자동으로 검색됩니다.

1.0.1804.18003

이 버전에는 이러한 업데이트가 포함됩니다.

기호 상태 및 취소 개선 사항 - 디버거가 BUSY 로딩 기호를 표시하고 무엇을 하고 있는지, 그리고 !sym noisy가 활성화되지 않은 이유를 결정하기 어려운 시간이 있습니다. 문제를 해결하는 데 도움이 되도록 기호를 로드할 때 수행하는 작업을 보다 효율적으로 통신하도록 WinDbg 미리 보기를 업데이트했습니다. 정확히 무슨 일이 일어나고 있는지 쉽게 확인할 수 있을 뿐만 아니라 취소 기호를 보다 안정적으로 만들어야 하는 몇 가지 변경 사항을 적용했으며 로그 창에는 !sym 노이즈(!sym noisy)가 활성화될 때 일반적으로 출력되는 세부 정보가 포함됩니다. 뷰에> 도달하면 로그를 켜고 기호를 다시 로드하지 않고도 전체 노이즈 기호 로드 출력이 표시됩니다.

실험적 노트 창 - 이제 WinDbg 미리 보기에 메모를 작성할 수 있는 창이 있습니다. 보기를> 누르기만 하면 됩니다. "메모"를 눌러 엽니다. 복사하여 붙여넣으면 DML 링크가 유지되고 명령 창인 것처럼 계속 작동합니다. 창을 열 때 "메모" 리본에서 노트 파일을 저장하고 로드할 수도 있습니다.

실험적 빠른 원본 창 - WinDbg 미리 보기의 성능을 향상시키기 위해 훨씬 더 효율적인 실험적인 새 원본 창이 있습니다. 상황에 맞는 메뉴와 구문 강조 표시에는 여전히 몇 가지 차이가 있지만, 조기 피드백을 제공하기 위해 완료되기 전에 모든 사용자에게 시도해 볼 수 있는 옵션을 제공하고자 합니다. $UseFastSourceWindow 실행하여 사용합니다. 이전 항목으로 돌아가려면 $UseMonacoSourceWindow 실행합니다. 설정은 세션 간에 유지됩니다. 새 버전을 얻으려면 창을 닫고 다시 오픈 소스 합니다.

JSProvider API 버전 1.2 - API 버전 1.2 에 대한 지원을 선언하는 JavaScript 확장의 경우:

  • 스크립트를 종료하는 .compareTo 메서드가 있는 모든 개체에는 사용자 지정 비교자가 있습니다(비교 연산자는 DX 계산기 및 다른 위치에서 작동합니다.예: IModelObject::Compare).
  • 스크립트를 종료하는 .equals 메서드가 있는 모든 개체에는 사용자 지정 같음 연산자가 있습니다(== 및 !=는 DX 계산기 및 기타 위치에서 작동합니다.예: IModelObject::IsEqualTo).
  • 스크립트를 입력하는 네이티브 또는 데이터 모델 개체에는 사용자 지정 비교자 또는 사용자 지정 같음 구현에 대한 액세스를 허용하는 .compareTo 및 .equals가 있습니다.

사소한 변경 및 버그 수정:

  • 이제 .server에서 정규화된 do기본 이름을 나열하여 짧은 이름에 대해 기본 문제가 있을 때 더 쉽게 사용할 수 있습니다.
  • 이제 Ctrl+G가 원본 창에서 작동합니다.
  • 디스어셈블리 창에 주소 표시줄이 추가되었습니다.
  • WinDbg 미리 보기는 이제 더 예상된 방식으로 _NT_SYMBOL_PATH 처리합니다.
  • -server 명령줄 옵션이 추가되었습니다.
  • 이제 TTD 데이터 모델 쿼리를 점진적으로 표시할 수 있으므로 중단하면 일부 결과가 계속 표시됩니다. 이 기능은 여전히 실험적이며 선택 사항입니다. 실행 dx @$cursession.TTD.AsyncQueryEnabled = 1 하여 사용하도록 설정합니다.
  • 이제 'dps' 명령에 참조하는 원본 파일에 대한 링크가 있습니다.

1.1801.19001.0

이 버전에는 이러한 업데이트가 포함됩니다.

텍스트 강조 표시 - 이제 디버거에서 선택한 텍스트의 모든 인스턴스를 직접 강조 표시할 수 있습니다. 이 기능을 사용하려면 명령 창에서 일부 텍스트를 선택한 다음 명령 리본에서 "강조 표시"를 선택하거나 Ctrl+Alt+H를 누릅니다. 이미 강조 표시된 텍스트에서 해당 텍스트 중 하나를 사용하면 강조 표시가 제거됩니다.

명령을 사용하려는 경우 "$hl" 명령을 사용할 수 있습니다.

$hl ["someValueHere"] - 강조 표시 텍스트 제공(또는 이미 강조 표시된 경우 강조 해제)

$hl clearAll – 강조 표시된 모든 항목 지우기

$hl caseSensitive [1|0] - 대/소문자 구분 또는 대/소문자를 구분하지 않는 강조 표시 일치 설정(기본값: 대/소문자 구분)

이 릴리스에는 몇 가지 사소한 버그 수정도 포함되어 있습니다.

1.1712.15003.0

이 버전에는 이러한 업데이트가 포함됩니다.

TTD 메모리 쿼리 - 이제 현재 호출을 쿼리하는 방법과 유사한 메모리 액세스를 위해 TTD를 쿼리할 수 있습니다. 이렇게 하면 특정 메모리 범위에 액세스하는 모든 읽기, 쓰기 및 실행을 찾을 수 있습니다.

읽기 및 쓰기 예제: dx @$cursession.TTD.Memory(startAddress, endAddress, "rw")

고유 실행 예제: dx @$cursession.TTD.Memory(startAddress, endAddress, "ec")

설정 변경 - 이제 WinDbg Preview에서 기호 경로와 원본 경로를 포함하여 세션 간에 설정을 자동으로 저장합니다.

JavaScript 개선 사항

  • 이제 JavaScript의 64비트 숫자와 숫자에는 실제 64비트 모듈로 작업을 허용하는 모듈로 메서드가 포함되어 있습니다.
  • 이제 JavaScript에 정의된 개체는 표준 C++ 연산자 또는 LINQ 연산을 사용하여 dx에서 작동하는 사용자 지정 비교 가능 또는 동일할 수 있는 개념을 구현할 수 있습니다. 이를 활용하려면 스크립트가 "new host.apiVersionSupport(1, 2)" 레코드를 삽입하여 새 버전의 호스트 API를 지원하는 initializeScript 배열에서 선언해야 합니다. 작업을 완료한 후에는 'dx' 또는 데이터 모델 창 LINQ 쿼리에서 이러한 함수를 사용할 수 있습니다. 메서드가 .compareTo(기타)를 구현하는 경우 비교됩니다(비교 연산자는 dx 및 LINQ에서 작동함). 메서드가 "this < other"와 같은 음수 값을 반환하는 경우 메서드가 0을 반환하면 "this == other"입니다. 메서드가 양수 값 "this > other"를 반환하는 경우 메서드가 .equals(other)를 구현하는 경우 동일할 수 있습니다(==는 dx 및 LINQ에서 작동함). 메서드는 true 또는 false를 반환해야 합니다.

사소한 변경 및 버그 수정:

  • 부팅 디버깅 중에 스택 및 로컬 창이 작동하지 않는 버그가 수정되었습니다.
  • ProductVersion 및 유사한 필드를 보다 정확하게 보고하도록 LM의 출력을 업데이트했습니다.
  • TTD 세션 중 "뒤로 나가기" 단추 사용
  • -lsrcpath에 대한 지원 추가
  • 로컬, 조사식 및 모델 창의 헤더는 아래로 스크롤할 때 사라지지 않습니다.
  • Alt+Tabbing을 WinDbg 미리 보기로 되돌리면 명령 창이 커서 위치를 제대로 유지합니다.
  • 자세한 정보 표시 모드를 전환하기 위한 Ctrl+Alt+V 바로 가기가 추가됨
  • 이제 명령 창 탭을 선택하고 유지(또는 마우스 오른쪽 단추로 클릭)하고 "자동 스크롤 해제"를 선택하여 명령 창의 자동 스크롤을 사용하지 않도록 설정할 수 있습니다.
  • 이제 실행 실행 고급 시작 페이지를 통해 자식 프로세스를 디버그할 수 있습니다.

1.0.14.0

이 버전에는 이러한 업데이트가 포함됩니다.

향상된 프로세스 서버 환경 - 연결되고 상호 작용하는 프로세스 서버를 표시하는 파일 메뉴의 새 알림이 추가되었습니다. 이러한 변경 내용의 일부로 디버깅 세션을 종료할 때 프로세스 서버 연결이 유지되고 파일 메뉴에서 연결이 끊어질 수 있습니다.

보기 리본 메뉴의 새 미리 설정된 레이아웃 옵션 - "보기" 리본 에 새 "레이아웃" 옵션이 있습니다. 현재 세 가지 레이아웃이 있습니다. 기본값, 디스어셈블리에 중점을 두는 레이아웃, 최소 레이아웃 1개.

시간 이동 디버깅 리본 - 시간 이동 디버깅 추적을 디버깅할 때 표시되는 향상된 시간 이동 리본이 있습니다.

JavaScript 스크립트의 메타데이터 - 이제 JavaScript 확장은 속성 및 기타 구문에 대한 메타데이터를 반환할 수 있습니다. 즉, 확장에서 도움말 문자열을 제공하고 값에 대한 표시 반지름 등을 나타낼 수 있습니다. 메타데이터는 Symbol.metadataDescriptor가 있거나 host.metadata.defineMetadata에 대한 명시적 호출을 통해 개체에 메타데이터 설명자를 배치하여 제공됩니다. 함수 반환, 반복된 값 및 기타 값 컨텍스트는 host.metadata.valueWithMetadata를 통해 해당 값에 대한 메타데이터를 반환할 수 있습니다.

JavaScript API 업데이트 - JavaScript 공급자 내의 API에 잠재적으로 소스 수준 호환성이 손상되는 일부 변경이 적용되었습니다(네이티브 개체의 새 프로젝션된 메서드 및 속성 포함). 기존 확장은 새 버전의 JsProvider API를 지원함을 나타내지 않고 잠재적으로 호환성이 손상되는 변경 내용을 볼 수 없습니다. 새 API 버전에 대한 지원은 지원 버전 1.1의 클레임과 함께 initializeScript에서 반환된 배열에 host.apiVersionSupport 레코드를 배치하여 표시됩니다. 어쩌면? .. 버전 1.1에 대한 지원을 나타내는 값이 있는 경우

API 버전 1.1의 변경 내용은 다음과 같습니다.

  • 예외를 throw하는 대신 기호를 찾을 수 없는 경우 host.getModuleSymbol 및 host.getModuleType은 null을 반환합니다.
  • 모든 네이티브 개체에는 .targetLocation 외에도 주소 속성이 있습니다. 개체에 주소가 없으면 속성에 액세스할 때 예외가 throw됩니다.
  • 모든 네이티브 개체에는 개체의 JavaScript 위치 이름(예: 'address')과 충돌할 수 있는 개체의 속성에 액세스하기 위해 새 .getObjectValue 및 .setObjectValue 메서드가 있습니다.

추가 JavaScript 변경 내용

  • 이제 JavaScript 확장은 Object.defineProperty 및 delete 연산자를 통해 데이터 모델 개체의 속성을 추가하고 제거할 수 있습니다. JavaScript 클래스를 부모 모델 또는 형식 서명으로 추가하거나 등록하는 것은 여전히 개체 모델을 조작하는 매우 선호되는 방법입니다.
  • 이제 JavaScript 확장은 새 host.setModuleSymbol API를 통해 디버그 대상의 모듈 내에서 전역 변수를 수정할 수 있습니다.
  • 이제 64비트 라이브러리 형식(예: .add, .subtract, .multiply, .divide 등)에 있는 모든 수학 함수가 JavaScript 번호에도 있습니다.
  • 이제 JavaScript 함수 및 속성은 사용자 지정 마샬링을 통해 열거형인 값을 반환할 수 있습니다. 함수 또는 속성 접근자가 이러한 사용자 지정 마샬링을 연상시키기 위해 host.typeSystem.marshalAs(value, type...)를 반환할 수 있습니다.
  • 이제 스크립트 디버거의 중단점 명령은 줄/열 위치 외에도 함수 이름에서 중단될 수 있습니다.
  • JavaScript 확장의 형식 개체는 .containingModule 속성을 통해 포함하는 모듈에 액세스할 수 있습니다.

사소한 변경 및 버그 수정:

  • 덜 혼란스럽게 조건부 리본 탭의 서식을 수정했습니다.
  • 성능 향상을 위해 구문 분석에서 더 엄격하도록 DML을 다시 작업했습니다.
  • Ctrl+F의 성능 및 동작에 대한 다양한 수정 사항입니다.
  • TTD를 사용하기 전에 상승되지 않은 상태로 실행할 때 경고가 추가되었습니다.
  • 자동 대상 비트 감지를 재정의하는 옵션이 추가되었습니다.
  • 사용할 수 없는 경우 다양한 파일 메뉴 및 리본 옵션을 사용하지 않도록 설정했습니다(예: 덤프 파일의 경우 "이동").

알려진 문제:

  • SOS는 x86 추적에서 작동하지 않습니다.

1.0.13.0

이 버전은 시간 이동 추적을 추가합니다. 시간 이동 디버깅을 사용하면 프로세스를 기록한 다음 나중에 앞뒤로 재생할 수 있습니다. TTD(시간 이동 디버깅)를 사용하면 버그를 찾을 때까지 문제를 재현하는 대신 디버거 세션을 "되감기"하여 문제를 보다 쉽게 디버그할 수 있습니다. 자세한 내용은 시간 이동 디버깅 - 개요를 참조하세요.

1.0.12.0

이 버전은 WinDbg 미리 보기의 첫 번째 릴리스입니다. WinDbg 미리 보기에서 사용할 수 있는 기능에 대한 일반적인 내용은 WinDbg의 주요 기능입니다.

참고 항목

WinDbg – 설치

WinDbg – 명령줄 시작 옵션