WinDbg에서 지역 변수 보기 및 편집(클래식)
WinDbg에서 명령을 입력하거나, 로컬 창을 사용하거나, 조사식 창을 사용하여 지역 변수를 볼 수 있습니다.
디버거 명령 창
디버거 명령 창에서 dv 명령 또는 dt 명령을 입력하여 지역 변수 및 매개 변수를 볼 수 있습니다.
로컬 창 열기
지역 창에는 현재 scope 있는 모든 지역 변수에 대한 정보가 표시됩니다.
로컬 창을 열거나 전환하려면 WinDbg 창의 보기 메뉴에서 로컬을 선택합니다. (Alt+3을 누르거나 도구 모음에서 로컬 단추를 선택할 수도 있습니다. ALT+Shift+3은 로컬 창을 닫습니다.)
다음 스크린샷은 지역 창의 예를 보여 줍니다.
로컬 창에는 4개의 열이 포함될 수 있습니다. 이름 및 값 열은 항상 표시되며 형식 및 위치 열은 선택 사항입니다. 형식 및 위치 열을 표시하려면 도구 모음에서 각각 Typecast 및 위치 단추를 선택합니다.
로컬 창 사용
로컬 창에서 다음을 수행할 수 있습니다.
이름 열에는 각 지역 변수의 이름이 표시됩니다. 변수가 데이터 구조인 경우 이름 옆에 검사 상자가 나타납니다. 구조체 멤버의 표시를 확장하거나 축소하려면 검사 상자를 선택하거나 선택 취소합니다.
값 열에는 각 변수의 현재 값이 표시됩니다.
- 변수에 대한 새 값을 입력하려면 현재 값을 두 번 클릭하고 새 값을 입력하거나 이전 값을 편집합니다. (잘라내기, 복사 및 붙여넣기 명령은 편집에 사용할 수 있습니다.) C++ 식을 입력할 수 있습니다.
- 새 값을 저장하려면 Enter 키를 누릅니다.
- 새 값을 삭제하려면 ESC를 누릅니다.
- 잘못된 값을 입력하면 Enter 키를 누르면 이전 값이 다시 나타납니다.
int 형식의 정수는 10진수 값으로 표시됩니다. UINT 형식의 정수는 현재 반지름에 표시됩니다. 현재 radix를 변경하려면 디버거 명령 창에서 n(숫자 기준 설정) 명령을 사용합니다.
형식 열(로컬 창에 표시되는 경우)에는 각 변수의 현재 데이터 형식이 표시됩니다. 각 변수는 자체 데이터 형식에 적합한 형식으로 표시됩니다. 데이터 구조체의 형식 이름은 형식 열에 있습니다. 다른 변수 형식은 이 열에 "새 형식 입력"을 표시합니다.
"새 형식 입력"을 두 번 클릭하면 새 데이터 형식을 입력하여 형식을 캐스팅할 수 있습니다. 이 캐스트는 지역 창에서만 이 변수의 현재 표시를 변경합니다. 디버거 또는 대상 컴퓨터에서 아무것도 변경되지 않습니다. 또한 값 열에 새 값을 입력하는 경우 입력한 텍스트는 형식 열에 입력한 새 형식이 아닌 기호의 실제 형식에 따라 구문 분석됩니다. 로컬 창을 닫고 다시 열면 데이터 형식 변경 내용이 손실됩니다.
Type 열에 확장 명령을 입력할 수도 있습니다. 디버거는 기호의 주소를 이 확장에 전달하고 결과 출력을 현재 행 아래에 있는 일련의 축소 가능한 행에 표시합니다. 예를 들어 이 행의 기호가 스레드 환경 블록에 유효한 주소인 경우 Type 열에 !teb을 입력하여 이 기호의 주소에서 !teb 확장을 실행할 수 있습니다.
위치 열(로컬 창에 표시되는 경우)에는 데이터 구조의 각 멤버의 오프셋이 표시됩니다.
지역 변수가 Vtable을 포함하는 클래스의 instance 경우 이름 열에 Vtable이 표시되고 Vtable을 확장하여 함수 포인터를 표시할 수 있습니다. 파생된 구현을 가리키는 기본 클래스에 Vtable이 포함된 경우 파생 클래스 때문에 추가되는 멤버를 나타내기 위해 표기법 _vtcast_Class 표시됩니다. 이러한 멤버는 파생 클래스 형식처럼 확장됩니다.
로컬 컨텍스트는 지역 창에 표시할 지역 변수 집합을 결정합니다. 어떤 이유로든 로컬 컨텍스트가 변경되면 로컬 창이 자동으로 업데이트됩니다. 기본적으로 로컬 컨텍스트는 프로그램 카운터의 현재 위치와 일치합니다. 로컬 컨텍스트를 변경하는 방법에 대한 자세한 내용은 로컬 컨텍스트를 참조하세요.
로컬 창에는 두 개의 단추(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에서 조사식 창을 사용하여 지역 변수를 표시하고 변경할 수 있습니다. 조사식 창에는 원하는 변수 목록이 표시할 수 있습니다. 이러한 변수에는 모든 함수의 전역 변수 및 지역 변수가 포함될 수 있습니다. 조사식 창에는 언제든지 현재 함수의 scope 일치하는 변수의 값이 표시됩니다. 조사식 창을 통해 이러한 변수의 값을 변경할 수도 있습니다.
로컬 창과 달리 조사식 창은 로컬 컨텍스트 변경의 영향을 받지 않습니다. 현재 프로그램 카운터의 scope 정의된 변수만 해당 값을 표시하거나 수정할 수 있습니다.
조사식 창을 열려면 보기 메뉴에서 보기를 선택합니다. Alt+2를 누르거나 도구 모음에서 조사식 단추를 선택할 수도 있습니다. ALT+Shift+2는 조사식 창을 닫습니다.
다음 스크린샷은 조사식 창의 예를 보여줍니다.
조사식 창에는 4개의 열이 포함될 수 있습니다. 이름 및 값 열은 항상 표시되며 형식 및 위치 열은 선택 사항입니다. 형식 및 위치 열을 표시하려면 도구 모음에서 각각 Typecast 및 위치 단추를 선택합니다.
추가 정보
지역 변수 제어, 변수 사용 개요 및 scope 변경에 대한 자세한 내용 및 기타 메모리 관련 명령에 대한 설명은 메모리 읽기 및 쓰기를 참조하세요.