비트를 검사하는 돋보기가 있는 WinDbg 로고입니다.
이 항목에서는 WinDbg의 새로운 기능을 설명합니다. 이전 버전은 WinDbg 미리 보기로 출시되었습니다.
1.2506.12002.1
새로운 기능
이제 WinDbg는 콘솔 모드 디버거(cdb.exe/ntsd64.exe/kd.exe)와 함께 제공됩니다. 서로 이진 파일을 구분하고 도구의 기존 복사본을 방해하지 않도록 하기 위해 이진 파일에는 아키텍처 이름이 포함됩니다.
- cdbARM64.exe / cdbX64.exe / cdbX86.exe
- kdARM64.exe / kdX64.exe / kdX86.exe
- ntsdARM64.exe / ntsdX64.exe / ntsdX86.exe
추가 기능:
- 데이터 모델 도구 창 제목은 $OpenDmoToolwindow 명령을 통해 사용자 지정할 수 있으며 제목 표시줄 상황에 맞는 메뉴를 통해 변경할 수도 있습니다.
- 기호 파일의 병렬 HTTP 다운로드를 사용하도록 설정하는 새로운 디버거 설정입니다. 이 옵션은 기본적으로 사용하도록 설정됩니다.
버그 수정
- 최근 메뉴에서 성공적으로 열 수 있도록 명령줄(-z)을 통해 열린 덤프 파일에 대한 대상 경로를 저장하는 방법을 수정했습니다.
- 스크립트 편집기 창에서 충돌이 해결되었습니다.
- WinDbg가 원본 창에서 열린 원본 파일에서 일관되지 않은 줄 끝을 처리하여 원본 파일의 보다 일관된 보기를 제공하는 방법을 수정했습니다.
- 새 병렬 다운로드 기능을 사용할 때 HTTP 기호 서버에 대한 자격 증명을 갱신하지 않는 문제를 해결했습니다.
- JavaScript 확장에서 데이터 모델 개체의 속성이 제대로 열거되지 않는 문제를 해결했습니다.
- 클릭 및 끌기를 통해 순서를 다시 지정할 때 열 텍스트가 사라지는 문제를 해결했습니다.
- 시작 시 명령줄 옵션을 통한 이벤트 필터링 설정이 디버그 대상에 적용되지 않는 문제를 해결했습니다.
- 가끔 도구 창의 도킹을 해제할 때 빈 화면이 표시되는 문제가 해결되었습니다.
- ARM64 컴퓨터에서 X64 에뮬레이트된 프로세스의 미니덤프를 디버그할 수 없는 문제를 해결했습니다.
- 디버거를 크래시시키던 애매한 중단점 문제가 수정되었습니다.
- 라이브 Linux 프로세스를 디버깅할 때 프로세스 종료 시 GDBServer가 충돌하는 문제를 해결했습니다.
- 더 나은 속성 열거 및 충돌 문제 해결을 포함하여 JavaScript 확장(.scriptdebug) 디버깅과 관련된 여러 문제를 해결했습니다.
일반 UI 개선 사항
- 명령 제안 팝업은 커서 앞에 있는 모든 항목 대신 커서에 맞춰 정렬되고 제안된 완성만 표시합니다.
- 디버그 대상 오류 시작 대화 상자는 자세한 정보를 제공하며, 열린 덤프 오류의 경우 실패한 덤프 파일 TSG에 대한 하이퍼링크를 제공합니다.
- 도구 창 제목 표시줄에는 도킹된 탭과 동일한 상황에 맞는 메뉴가 있습니다.
- 로컬, 워치 및 모델 창의 시각적 개선 사항
- TTD(시간 이동 디버깅)가 버전 1.11.532로 업데이트되었습니다. 자세한 내용은 TTD 릴리스 정보를 참조하세요.
1.2502.25002.0
새로운 기능
명령 창 IntelliSense
명령 입력 프롬프트는 처음 입력된 문자가 .
(점), !
(뱅) 또는 $
(달러 기호)일 때 제안된 완성을 자동으로 표시합니다.
명령 바로 가기 Ctrl + Space
사용하여 제안을 호출할 수도 있습니다.
스냅샷 디버깅
라이브 프로세스를 디버깅하는 동안 로컬로 디버거는 프로세스의 스냅샷을 만들고 "확장" 탭의 아이콘을 통해 스냅샷과 라이브 프로세스 간에 전환할 수 있습니다. 마찬가지로 디버거는 "원격 디버거에 연결"의 snapshot:pid=<process pid in hex>
프로토콜 문자열을 통해 일시 중단하지 않고 프로세스의 프로세스 스냅샷에 연결할 수 있습니다.
새 데이터 모델 API
Debugger.Utility.Symbols.GetTypeInformation
인패스된 개체와 연결된 형식 정보를 반환합니다. 포인터(또는 ref) 아래의 형식을 실제로 원하는 경우 포인터의 자동 역참조(한 수준)를 허용하는 선택적 인수가 있습니다.
Debugger.Utility.Control.CreateStepFilter(<Type>, <Pattern>)
새 단계 필터를 만듭니다. 모든 중단점 만들기 API에 인접한 이 네임스페이스에 있습니다.
Debugger.State.StepFilters
속성 ID, 설명, 형식, 패턴 및 IsEnabled가 있는 단계 필터 목록을 반환합니다. 단계 필터 개체에 Remove() 메서드가 있습니다.
clrcomposition.dll 없이 CLR 디버깅 환경 개선
재배포 가능 구성 요소 dbgeng.dll
는 이제 clrcomposition.dll
없이도 CLR 프레임에 대한 스택 검토 지원이 향상되었습니다.
임의 개선 사항
- Linux 커널 디버깅에 대한 향상된 지원(특히 6.11개 이상의 커널)
- ZSTD 압축 Kdump 페이지 지원
버그 수정
- SOS를 버전 9.0.557512로 업데이트합니다.
- msdia140.dll로드할 때 해지된 서명을 확인하는 성능 회귀가 수정되었습니다.
- XSTATE 컨텍스트를 읽을 때 충돌이 해결되었습니다.
- 사용 가능한 중단점과 구분하기 위해 디스어셈블리 창에서 비활성화된 중단점 강조 표시가 수정되었습니다.
- 부동 도구 창을 닫을 때 발생하는 충돌을 해결했습니다.
- 최근 추적을 연 후 타임라인 창 현재 위치가 채워지지 않는 문제가 해결되었습니다.
- 새 값을 입력한 후 디스어셈블리 및 메모리 창이 업데이트되지 않는 문제가 해결되었습니다.
- 어두운 테마의 제목 표시줄 색 구성표가 수정되었습니다.
- 중단점 창에서 지연된 중단점의 '위치'가 생성될 때 입력한 원래 식 대신 0x0으로 표시되던 문제가 수정되었습니다. 또한 바인딩되지 않음을 나타내는 고유 아이콘이 있습니다.
- 표시되는 항목을 마우스 오른쪽 단추로 클릭하면 보기가 위로 스크롤되는 지역/조사식의 문제가 해결되었습니다.
- natvis 관련 문제가 해결되었습니다. 원래 버그 보고서 참조하세요.
- kd 디버거 스팸 메시지
Error getting port connector information
이 수정되었습니다. 원래 버그 보고서 는을 참조하세요. - 조건이 false일 때 조건부 중단점을 트리거하는
gc
문제를 해결했습니다. - 이제 TTD 추적을 디버깅할 때 YMM 및 ZMM 레지스터를 볼 수 있습니다.
접근성 수정
- 로컬, 감시 및 중단점 창의 키보드 탐색 기능이 향상되었습니다.
- 리본, 로컬, 조사식 및 중단점 창의 시각적 가독성이 향상되었습니다.
- 로컬, 조사식 및 중단점 창에서 화면 읽기 프로그램의 사용성 개선
- 가능한 경우 로컬, 감시, 중단점에서 항목을 편집하면 이 전의 키보드 포커스, 선택, 스크롤이 유지됩니다.
- Windows 텍스트 크기 조정에 대한 일반 지원 향상
일반 UI 개선 사항
- 명령 입력 텍스트 상자와 명령 출력 창 간에 포커스를 전환하는 명령이 명령 프롬프트의 Toggle Mark 모드처럼 추가되었습니다. 바로가기는
Ctrl + M
- 중단점 창에 디스어셈블리 상황에 맞는 메뉴 항목으로 이동 추가됨
- 디스어셈블리 창에 '실행할 명령으로 이동', '명령 포인터 설정', '원본 코드로 이동', '중단점 토글', '중단점 상태 토글'을 위한 상황별 메뉴가 추가됨.
TTD(시간 이동 디버깅)
- 버전 1.11.481로 업데이트되었습니다.
- TTD 릴리스 정보 참조
1.2410.11001.0
호환성이 손상되는 변경
- dbghelp.dll 동적으로 msdia140.dll연결합니다. 이는 msdia140.dll포함하지 않고 dbghelp.dll 재배포하는 도구에만 영향을 주어야 합니다. msdia140.dll dbghelp.dll포함하는 nuget 패키지에 포함되어 있습니다.
버그 수정
- 확장 갤러리 함수 별칭이 로드 트리거에 바인딩되지 않는 문제를 해결했습니다.
- ERROR_INTERNET_SECURITY_CHANNEL 오류가 수신될 때 기호 저장소를 소멸하지 마세요.
- 영어가 아닌 키보드 레이아웃의 명령 창에 백슬래시를 입력할 수 없는 문제가 해결되었습니다.
- 텍스트가 호스트된 열보다 길면 중단점, 지역 및 조사식 창의 편집 텍스트 상자가 커서로 스크롤되지 않는 문제가 해결되었습니다.
- CAB 또는 ZIP 덤프의 경우 *.*.dmp(이중 기간)에 대해 *.dmp(단일 기간)의 우선 순위를 지정합니다.
접근성 수정
- Watch/Locals 창에 대해 키보드를 통한 열 크기 조정이 수정되었습니다.
- WinDbgX 전체에서 키보드 탐색이 향상되었습니다.
1.2409.17001.0
접근성 수정
화면 읽기 프로그램을 사용하여 WinDbg와 상호 작용할 때 몇 가지 문제를 해결했습니다.
버그 수정
- WinDbgX를 제거하면 클래식 WinDbg가 시작되지 않는 문제가 해결되었습니다.
- WinDbgX가 시작 중에 나타난 후 크기를 조정하는 문제가 해결되었습니다.
TTD(시간 이동 디버깅)
- 버전 1.11.429로 업데이트되었습니다.
- 자세한 내용은 TTD 릴리스 정보를 참조하세요.
1.2407.24003.0
새로운 기능
새 JavaScript 스크립팅 공급자
이제 V8을 기반으로 이전 버전과 호환되는 새로운 JavaScript 공급자를 제공합니다. 이로 인해 arm64 호스트는 이제 JavaScript 확장을 사용할 수 있습니다. arm64 UI도 이제 arm64 엔진의 기본값으로 설정됩니다.
새 공급자는 기본적으로 모든 아키텍처에서 사용하도록 설정됩니다.
x86 및 x64에서는 .veighton
및 .veightoff
명령을 통해 켜거나 끌 수 있습니다.
나중에 이러한 명령과 레거시 JavaScript 공급자가 제거됩니다.
확장 갤러리 및 데이터 모델을 통한 UI 확장성
확장 갤러리 매니페스트가 있는 디버거 확장은 이제 WinDbg 리본 메뉴의 새 확장 탭에 아이콘을 추가할 수 있습니다. 이러한 아이콘을 클릭하면 지정된 데이터 모델 쿼리의 시각화가 트리거됩니다. 확장성을 확보하는 방법은 확장 갤러리 매니페스트에 뷰를 추가하는 것입니다. 뷰는 이름과 아이콘의 결합을 데이터 모델 쿼리 및 뷰 종류에 연결합니다. 설명서는 확장 갤러리 매니페스트 설명서에서 찾을 수 있습니다.
확장 갤러리 예외 로드 트리거에 예외 매개 변수 추가됨
이제 특정 예외 매개 변수 값에 따라 갤러리 확장을 조건부로 로드할 수 있습니다. 자세한 내용은 확장 갤러리 매니페스트 설명서를 참조하세요.
특정 기호를 다운로드하지 않는 구성 옵션
이제 지정된 이미지에 대한 기호 다운로드를 건너뛸 수 있습니다.
Symbols
섹션의 DbgX.xml
구성 파일에 기호 목록을 추가할 수 있습니다.
<Namespace Name="DisabledSymbolsDownload">
<Setting Name="MSEdge.dll" Type="VT_BSTR" Value=""></Setting>
</Namespace>
디버거에서 dx Debugger.Settings.Symbols.DisabledSymbolsDownload
를 실행하여 다운로드되지 않는 현재 기호 목록을 볼 수 있습니다.
다음과 같이 디버거에서 직접 목록을 변경할 수도 있습니다.
dx @$curprocess.Modules[1].DisableSymbolDownload()
dx @$curprocess.Modules[1].EnableSymbolDownload()
SourceLink 정보를 표시하는 새 명령
포함된 SourceLink를 기반으로 소스를 다운로드할 때 발생하는 디버깅 문제를 해결하는 데 도움이 되도록, 이제 이 명령을 사용하여 디버거에서 사용할 SourceLink의 내용을 표시할 수 있습니다.
일반 UI 개선 사항
모듈 창 또는 스택 창과 같은 창을 약간 개선했습니다.
- 이제 머리글 열을 클릭하여 그리드 보기를 정렬할 수 있습니다.
- 더 많은 마우스 오른쪽 클릭 작업을 사용할 수 있습니다.
- 스택 창에는 프레임이 적절한 경우 인라인으로 표시됩니다.
버그 수정
- 4GB보다 큰 PDB가 HTTP를 통해 다운로드되지 않는 문제를 해결했습니다.
- Edge는 이러한 PDB의 예입니다.
- 디버거 자격 증명 공급자의 캐싱 문제가 해결되었습니다(이제 사이트당 자격 증명을 캐시합니다).
- 확장 갤러리 로드 트리거를 평가하는 동안 버그가 수정되었습니다.
-
!address
와 관련된 충돌이 발생할 수 있는 버그가 수정되었습니다. -
!heap -a -a
는 이제 작동해야 합니다.
TTD
버전 1.11.410에 대한 TTD 릴리스 노트를 참조하세요.
1.2402.24001.0
새로운 기능
라이브 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 이름 복원 지원
- CLR 디버깅의 향상된 기능
- 혼합 모드 스택 워킹을 강제 적용할 수 있는 CLR 프레임 기능 추가
<code>ForceMixedModeStackWalker</code> 설정이<code>config.xml</code> 또는<code>DbgX.xml</code>에 추가되었습니다. - 일회성 조사에 대한 명령이 추가
!forceclrmixedmodeunwind
되거나 구성 설정을 변경할 수 없는 경우
- 혼합 모드 스택 워킹을 강제 적용할 수 있는 CLR 프레임 기능 추가
- Linux에서 CLR 디버깅의 일반적인 개선 사항
- LinuxKernel.js 및 cpu당 변수와 관련된 여러 문제 해결
- LinuxKernel.js에 cpu당 커널 스케줄러 실행 큐를 덤프할 수 있는 명령이 추가되었습니다. 이는 Linux 크래시 유틸리티의 명령과 유사한 형태입니다.
- 커널 변경에 해당하도록 LinuxKernel.js 다양한 명령이 수정되었습니다. 최신 커널에서 타이머 트리는 원시 RB 노드 대신 캐시된 RB 노드를 사용합니다. 최근 커널에서 all_bdevs 목록이 사라지므로 블록 디바이스가 이제 슈퍼 블록에서 대신 걸어갑니다(blockdev_superblock).
- Visual Studio의 최신 버전처럼 작동하기 위한 다양한 natvis 수정
- sourcelink 및 레거시 sourceinfo를 선호합니다.
- pdb에서 sourcelink 스트림을 표시하는
!lmsourcesinfo <module>
명령이 추가되었습니다 (sourcelink의 디버깅 문제 해결을 돕기 위해).
- pdb에서 sourcelink 스트림을 표시하는
알려진 문제
TTD를 사용하여 기록할 모듈 목록을 지정하는 경우 이 릴리스에서는 둘 이상의 모듈을 지정하는 것이 작동하지 않습니다.
1.2308.2002.0
많은 버그 수정 및 작은 개선 사항.
1.2306.12001.0
많은 버그 수정 및 작은 개선 사항.
1.2303.30001.0
참고
디버거의 이름이 WinDbg 미리 보기에서 WinDbg로 변경되었습니다.
WinDbg(클래식)으로 참조되는 레거시 디버거는 Windows용 디버깅 도구와 함께 릴리스되었습니다.
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
Regex 검색
이제 WinDbg 미리 보기 검색에는 정규식인 Regex를 사용하여 검색하는 옵션이 포함됩니다. Ctrl+F를 수행하여 검색하려는 창에서 Regex를 사용하도록 설정한 다음 검색 상자 옆에 레이블이 지정된 .*
단추를 전환합니다.
제한된 모드
제한된 모드는 WinDbg Preview에서 원격 디버깅 세션을 시작하고 파일만 덤프할 수 있는 디버깅 세션의 유형을 제한할 수 있는 선택적 설정입니다. 자세한 내용은 WinDbg - 제한 모드를 참조하세요.
그림자 변수 지원
이전 버전에서 WinDbg는 범위 내의 다른 변수와 이름을 공유하는 변수를 평가(??)하거나 표시(dx)할 때 "모호한 기호" 오류를 발생시킵니다. 이제 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 타임라인의 스크린샷
책갈피를 선택하고 길게 누르거나 마우스 오른쪽 단추로 클릭하여 해당 위치로 이동하거나 책갈피의 이름을 바꾸거나 삭제할 수 있습니다.
위치, 편집 및 제거로 이동하는 옵션이 있는 책갈피 오른쪽 클릭 팝업 메뉴의 스크린샷.
모듈 창
새 창에는 모듈 및 관련 정보가 표시되며 보기 리본을 통해 사용할 수 있습니다. 표시되는 항목은 다음과 같습니다.
- 경로 위치를 포함하는 모듈의 이름
- 로드된 모듈의 크기(바이트)
- 모듈이 로드되는 기본 주소
- 파일 버전
WinDbg 모듈 보기 창에 나열된 5개의 모듈이 표시된 스크린샷
라이브 디버깅에서 사용할 수 있는 스레드 이름/설명
이제 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 파일은 여기에서 정의된 핵심 규약에 따라 기호 서버에서 다운로드됩니다. 엔클레이브는 유일하게 지원되는 경우이지만 다른 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가 있습니다. Debugger Data Model C++ Overview에서 더 많은 정보를 찾을 수 있습니다. 이 릴리스에는 '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는 짧은 이름에 대한 도메인 문제가 있을 때 더 쉽게 사용할 수 있게 정규화된 도메인 이름을 나열합니다.
- 이제 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 caseSensitive [1|0]
- 대/소문자 구분 또는 대/소문자를 구분하지 않는 강조 표시 일치 설정(기본값: 대/소문자 구분 안 함)
이 릴리스에는 몇 가지 사소한 버그 수정도 포함되어 있습니다.
1.1712.15003.0
이 버전에는 이러한 업데이트가 포함됩니다.
TTD 메모리 쿼리 - 이제 현재 호출을 쿼리하는 방법과 유사한 메모리 액세스를 위해 TTD를 쿼리할 수 있습니다. 이렇게 하면 특정 메모리 범위에 액세스하는 모든 읽기, 쓰기 및 실행을 찾을 수 있습니다.
읽기 및 쓰기 예제: dx @$cursession.TTD.Memory(startAddress, endAddress, "rw")
고유 실행 예제: dx @$cursession.TTD.Memory(startAddress, endAddress, "ec")
설정 변경 - WinDbg 미리 보기는 이제 기호 경로와 원본 경로를 포함하여 세션 간에 설정을 자동으로 저장합니다.
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 외에도 주소 속성이 있습니다. 개체에 주소가 없으면 해당 속성에 액세스할 때 예외가 발생합니다.
- 모든 네이티브 개체에는 개체의 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 Preview에서 사용할 수 있는 기능에 대한 일반적인 정보는 WinDbg의 주요 기능을 참조하십시오.
참고 항목