조사식 창 사용 - WinDbg(클래식)
조사식 창에는 전역 변수, 지역 변수 및 레지스터에 대한 정보가 표시됩니다. 추적 중인 항목을 표시하도록 이 창을 사용자 지정할 수 있습니다.
조사식 창 열기
조사식 창을 열거나 전환하려면 WinDbg 창의 보기 메뉴에서 조사식 을 클릭합니다.
도구 모음에서 Alt+2를 누르거나 조사식(ALT+2) 단추를 클릭할 수도 있습니다.
Alt+Shift+2는 조사식 창을 닫습니다.
다음 스크린샷은 조사식 창의 예를 보여줍니다.
조사식 창에는 4개의 열이 포함될 수 있습니다. 이름 및 값 열은 항상 표시되며 형식 및 위치 열은 선택 사항입니다. 형식 및 위치 열을 표시하려면 도구 모음에서 각각 Typecast 및 Locations 단추를 클릭합니다.
조사식 창에서 다음을 수행할 수 있습니다.
조사식 창에 변수를 추가하려면 이름 열에서 첫 번째 빈 셀을 선택하고 변수 이름을 입력한 다음 Enter 키를 누릅니다. 느낌표(!)를 사용하여 변수에서 모듈 이름을 구분합니다. 모듈을 지정하지 않으면 현재 모듈이 사용됩니다. 이름 필드에 주소를 입력하려면 주소가 10진수로 시작해야 합니다(필요한 경우 접두사 0x 사용).
입력한 변수 이름이 현재 함수의 scope 정의된 경우 값 열에 해당 값이 나타납니다. 정의되지 않은 경우 값열에 "오류: 값을 가져올 수 없음"이 표시됩니다.
변수가 정의되지 않은 경우에도 조사식 창에 변수를 추가하는 것이 유용할 수 있습니다. 프로그램 카운터가 이 이름의 변수가 정의된 함수를 입력하면 해당 값이 창에 나타납니다.
조사식 창에서 변수를 제거하려면 해당 이름을 두 번 클릭하고 DELETE 키를 누른 다음 Enter 키를 누릅니다. 이전 이름을 두 번 클릭하고 새 이름을 입력한 다음 Enter 키를 눌러 이전 이름을 새 이름으로 바꿀 수도 있습니다.
변수가 데이터 구조인 경우 이름 옆에 검사 상자가 나타납니다. 구조체 멤버의 표시를 확장하고 축소하려면 검사 상자를 선택하거나 선택 취소합니다.
int 형식의 정수는 10진수 값으로 표시됩니다. UINT 형식의 정수는 현재 radix에 표시됩니다. 현재 radix를 변경하려면 디버거 명령 창에서 n(숫자 기준 설정) 명령을 사용합니다.
지역 변수의 값을 변경하려면 Value 셀을 두 번 클릭합니다. 새 값을 입력하거나 이전 값을 편집합니다. (잘라내기, 복사 및 붙여넣기 명령은 편집에 사용할 수 있습니다.) 입력한 값에는 C++ 식이 포함될 수 있습니다. 새 값을 입력하거나 이전 값을 편집한 후 Enter 키를 눌러 새 값을 저장하거나 ESC를 눌러 삭제할 수 있습니다. 잘못된 값을 제출하면 Enter 키를 누르면 이전 값이 다시 나타납니다.
int 형식의 정수는 10진수 값으로 표시됩니다. UINT 형식의 정수는 현재 radix에 표시됩니다. 현재 radix를 변경하려면 디버거 명령 창에서 n(숫자 기준 설정) 명령을 사용합니다.
조사식 창에 표시되는 형식 열에는 각 변수의 현재 데이터 형식이 표시됩니다. 각 변수는 자체 데이터 형식에 적합한 형식으로 표시됩니다. 데이터 구조체의 형식 이름은 형식 열에 있습니다 . 다른 변수 형식은 이 열에 "새 형식 입력"을 표시합니다.
"새 형식 입력"을 두 번 클릭하면 새 데이터 형식을 입력하여 형식을 캐스팅할 수 있습니다. 이 캐스트는 조사식 창에서만 이 변수의 현재 표시를 변경합니다. 디버거 또는 대상 컴퓨터에서 아무것도 변경되지 않습니다. 또한 값 열에 새 값을 입력하는 경우 입력한 텍스트는 형식 열에 입력한 새 형식이 아니라 기호의 실제 형식에 따라 구문 분석됩니다. 조사식 창을 닫고 다시 열면 데이터 형식 변경 내용이 손실됩니다.
Type 열에 확장 명령을 입력할 수도 있습니다. 디버거는 기호의 주소를 이 확장에 전달하고 결과 출력을 현재 행 아래에 있는 일련의 축소 가능한 행으로 표시합니다. 예를 들어 이 행의 기호가 스레드 환경 블록에 유효한 주소인 경우 Type 열에 !teb을 입력하여 이 기호의 주소에서 !teb 확장을 실행할 수 있습니다.
위치 열(조사식 창에 표시되는 경우)에는 데이터 구조의 각 멤버의 오프셋이 표시됩니다.
변수 외에도 조사식 창에서 다음 항목을 모니터링할 수 있습니다.
- 등록. 조사식 창에 레지스터를 추가하면 이름 앞에 at 기호(@)를 접두사로 추가합니다. 변수와 달리 조사식 창을 통해 레지스터 값을 변경할 수 없습니다.
- 함수 포인터를 포함하는 Vtable입니다. 조사식 창에 Vtable이 나타나면 테이블의 함수 항목을 찾아볼 수 있습니다. 파생된 구현을 가리키는 기본 클래스에 Vtable이 포함된 경우 파생 클래스로 인해 추가되는 멤버를 나타내기 위해 _vtcast_Class 표기법이 표시됩니다. 이러한 멤버는 파생 클래스 형식처럼 확장됩니다.
- _EFN_GetPoolData 같은 확장 함수의 반환 값입니다.
지역 창과 달리 조사식 창은 레지스터 컨텍스트 변경의 영향을 받지 않습니다. 조사식 창에서 현재 프로그램 카운터의 scope 정의된 변수만 보고 수정할 수 있습니다.
새 작업 영역을 열면 조사식 창 내용이 삭제되고 새 작업 영역의 내용으로 바뀝니다.
도구 모음 및 바로 가기 메뉴
조사식 창에는 두 개의 단추(Typecast 및 위치)와 추가 명령이 있는 바로 가기 메뉴가 포함된 도구 모음이 있습니다. 메뉴에 액세스하려면 창의 제목 표시줄을 마우스 오른쪽 단추로 클릭하거나 창의 오른쪽 위 모서리 근처에 있는 아이콘을 클릭합니다.
도구 모음 및 메뉴에는 다음 단추와 명령이 포함되어 있습니다.
(도구 모음 및 메뉴) Typecast 는 Type 열의 표시를 켜고 끕니다.
(도구 모음 및 메뉴) 위치 는 위치 열의 표시를 켜고 끕니다.
(메뉴에만 해당) 유니코드가 이 창에 유니코드 문자열을 표시 할 때 16비트 값을 표시합니다. 이 명령은 로컬 창, 조사식 창 및 디버거 명령 출력에 영향을 주는 전역 설정을 켜고 끕니다. 이 명령은 .enable_unicode(유니코드 표시 사용) 명령을 사용하는 것과 같습니다.
(메뉴에만 해당) 항상 기본 반지름에 숫자를 표시 하면 정수가 항상 10진수 형식으로 표시되는 대신 기본 반지름으로 표시됩니다. 이 명령은 로컬 창, 조사식 창 및 디버거 명령 출력에 영향을 주는 전역 설정을 켜고 끕니다. 이 명령은 .force_radix_output(정수에 Radix 사용) 명령을 사용하는 것과 같습니다.
참고기본 radix 명령의 항상 숫자 표시 는 긴 정수에 영향을 주지 않습니다. .enable_long_status(긴 정수 표시 사용) 명령을 사용하지 않는 한 긴 정수는 10진수 형식으로 표시됩니다. .enable_long_status 명령은 로컬 창, 조사식 창 및 디버거 명령 출력의 디스플레이에 영향을 줍니다. 조사식 창의 메뉴에서 이 명령에 해당하는 항목이 없습니다.
(메뉴에만 해당) 선택한 값에 대한 메모리 창을 열면 선택한 식의 주소에서 시작하는 메모리를 표시하는 도킹된 새 메모리 창이 열립니다.
(메뉴에만 해당) 선택한 메모리 값에 대해 dt를 호출하면 선택한 기호를 매개 변수로 사용하여 dt(표시 형식) 명령을 실행합니다. 결과는 디버거 명령 창에 나타납니다. -n 옵션은 기호를 16진수 주소와 구분하는 데 자동으로 사용됩니다. 다른 옵션은 사용되지 않습니다. 이 메뉴 선택을 사용하여 생성된 콘텐츠는 명령줄에서 dt 명령을 실행할 때 생성되는 콘텐츠와 동일하지만 형식은 약간 다릅니다.
(메뉴에만 해당) 도구 모음 은 도구 모음을 켜고 끕니다.
(메뉴에만 해당) 도킹 또는 도킹 해제 로 인해 창이 도킹된 상태로 들어가거나 그대로 유지됩니다.
(메뉴에만 해당) 새 도크로 이동 하면 조사식 창이 닫히고 새 도크에서 열립니다.
(메뉴에만 해당) 조사식 창에서는 창 유형에 대해 탭 도킹 대상으로 설정할 수 없습니다. 이 옵션은 원본 또는 메모리 창에만 사용할 수 있습니다.
(메뉴에만 해당) 항상 부동 하면 도킹 위치로 끌어도 창이 도킹되지 않은 상태로 유지됩니다.
(메뉴에만 해당) 프레임을 사용하여 이동 하면 창이 도킹 해제된 경우에도 WinDbg 프레임이 이동될 때 창이 이동합니다.
(메뉴에만 해당) 도움말 은 Windows용 디버깅 도구 설명서에서 이 항목을 엽니다.
(메뉴에만 해당) 닫기 에서 이 창을 닫습니다.
추가 정보
변수 제어 및 다른 메모리 관련 명령에 대한 설명에 대한 자세한 내용은 메모리 읽기 및 쓰기를 참조하세요. 레지스터 및 해당 조작에 대한 자세한 내용은 WinDbg(클래식)에서 레지스터 보기 및 편집을 참조하세요.