서식 지정자를 사용하여 Watch, Autos 및 Locals 창에 값이 표시되는 형식을 변경할 수 있습니다.
직접 실행 창, 명령 창, 추적점 및 원본 창에서도 서식 지정자를 사용할 수 있습니다. 해당 창의 식에서 일시 중지하면 결과가 DataTip에 표시됩니다. DataTip 디스플레이는 형식 지정자를 반영합니다.
비고
Visual Studio 네이티브 디버거가 새 디버깅 엔진으로 변경되면 일부 새 형식 지정자가 추가되고 일부 이전 형식 지정자가 제거되었습니다. 이전 디버거는 C++/CLI를 사용하여 interop(혼합 네이티브 및 관리형) 디버깅을 수행할 때에도 계속 사용됩니다.
형식 지정자 설정
다음 예제 코드를 사용합니다.
int main() {
int my_var1 = 0x0065;
int my_var2 = 0x0066;
int my_var3 = 0x0067;
}
디버깅 중에 my_var1 변수를 조사식 창에 추가합니다. 디버그>Windows>조사식>1. 그런 다음 변수를 마우스 오른쪽 단추로 클릭하고 16진수 표시를 선택합니다. 이제 Watch 창에 0x0065 값이 표시됩니다. 이 값을 정수가 아닌 문자로 표현하려면 먼저 마우스 오른쪽 단추를 클릭하고 16진수 표시를 선택 취소합니다. 그런 다음 변수 이름 다음에 Name 열에 문자 형식 지정자 c를 추가합니다. 이제 값 열에 101 'e'가 표시됩니다.
조사식 창의 값 뒤에 쉼표(,)를 추가하면 사용 가능한 형식 지정자 목록을 볼 수 있고 선택할 수 있습니다.
서식 지정자
다음 표에서는 Visual Studio에서 사용할 수 있는 형식 지정자에 대해 설명합니다. 굵게 표시된 지정자는 C++/CLI를 사용한 interop 디버깅이 아니라 새 디버거에 대해서만 지원됩니다.
| 지정자 | 포맷 | 원래 감시 값 | 표시된 값 |
|---|---|---|---|
| d | 10진수 정수 | 0x00000066 | 102 |
| o | 부호 없는 8진수 정수 | 0x00000066 | 000000000146 |
| x h |
16진수 정수 | 102 | 0xcccccccc |
| X H |
16진수 정수 | 102 | 0xCCCCCCCC |
| xb hb |
16진수 정수(선행 0x 제외) | 102 | cccccccc |
| Xb Hb |
16진수 정수(선행 0x 제외) | 102 | CCCCCCCC |
| b | 부호 없는 이진 정수 | 이십오 (25) | 0b00000000000000000000000000011001 |
| bb | 부호 없는 이진 정수(선행 0b 제외) | 이십오 (25) | 00000000000000000000000000011001 |
| e | 과학적 표기법 | 25000000 | 2.500000e+07 |
| g | 과학 또는 부동 소수점의 짧은 | 25000000 | 2.5e+07 |
| c | 단일 문자 | 0x0065 | 101 ‘이’ |
| s | const char* 문자열(따옴표 포함) | <위치> "hello world" | 안녕 세상아 |
| sb | const char* 문자열(따옴표 없음) | <위치> "hello world" | 전 세계 여러분 안녕하세요 |
| s8 | UTF-8 문자열 | <위치> "이것은 UTF-8 커피 컵 ☕" | "이것은 UTF-8 커피 컵 ☕" |
| s8b | UTF-8 문자열(따옴표 없음) | <위치> "hello world" | 전 세계 여러분 안녕하세요 |
| 슈 | 유니코드(UTF-16 인코딩) 문자열(따옴표 포함) | <위치> L"hello world" | L"안녕하세요, 세계" 안녕하세요 세계 |
| 하위 | 유니코드(UTF-16 인코딩) 문자열(따옴표 없음) | <위치> L"hello world" | 전 세계 여러분 안녕하세요 |
| bstr | BSTR 이진 문자열(따옴표 포함) | <위치> L"hello world" | L"안녕하세요, 세계" |
| 환경 | 환경 블록(이중 null로 종료된 문자열) | <위치> L"=::=::\\" | L"=:::=::\\0=C:=C:\\windows\\system32\0ALLUSERSPROFILE=... |
| s32 | UTF-32 문자열(따옴표 포함) | <위치> U"hello world" | U"안녕하세요 세계" |
| s32b | UTF-32 문자열(따옴표 없음) | <위치> U"hello world" | 전 세계 여러분 안녕하세요 |
| en | enum | 토요일(6) | 토요일 |
| hv | 포인터 형식 - 검사 중인 포인터 값이 배열의 힙 할당 결과임을 나타냅니다. 예를 들면 다음과 같습니다 new int[3]. |
<위치>{<첫 번째 멤버>} | <위치>{<첫 번째 구성원>, <두 번째 구성원>, ...} |
| na | 개체에 대한 포인터의 메모리 주소를 표시하지 않습니다. | <location>, {member=value...} | {member=value...} |
| nd | 파생 클래스를 무시하고 기본 클래스 정보만 표시합니다. |
(Shape*) square 기본 클래스 및 파생 클래스 정보를 포함합니다. |
기본 클래스 정보만 표시합니다. |
| hr | HRESULT 또는 Win32 오류 코드입니다. 디버거가 자동으로 디코딩하므로 HRESULT에는 이 지정자가 더 이상 필요하지 않습니다. | S_OK | S_OK |
| 화장실 | 창 클래스 플래그 | 0x0010 | WC_DEFAULTCHAR |
| (Assuming "wm" stands for "window manager") 윈도우 관리자 | Windows 메시지 번호 | 16 | WM_CLOSE |
| nr | "원시 보기" 항목 숨기기 | ||
| nvo | 숫자 값에 대해서만 "원시 보기" 항목 표시 | ||
| ! | 원시 형식, 데이터 형식 뷰 사용자 지정 무시 | <사용자 지정된 표현> | 4 |
| 핸들 | win32 핸들에 대한 정보를 표시합니다. | 0x000000000000009c | 스레드 ID 등과 같은 핸들에 대한 유용한 정보를 표시합니다. |
비고
hv 형식 지정자가 있으면 디버거는 버퍼의 길이를 확인하고 해당 요소 수를 표시하려고 시도합니다. 디버거가 배열의 정확한 버퍼 크기를 찾는 것이 항상 가능한 것은 아니므로 가능할 때마다 크기 지정자를 (pBuffer,[bufferSize]) 사용해야 합니다.
hv 형식 지정자는 버퍼 크기를 쉽게 사용할 수 없는 경우에 유용합니다.
포인터를 배열로 지정하는 크기 지정자
배열로 보려는 개체에 대한 포인터가 있는 경우 정수 또는 식을 사용하여 배열 요소의 수를 지정할 수 있습니다.
| 지정자 | 포맷 | 원래 감시 값 | 표시된 값 |
|---|---|---|---|
| n | 10진수 또는 16진수 정수 | pBuffer,[32] pBuffer,[0x20] |
pBuffer 32개 요소 배열로 표시됩니다. |
| [exp] | 정수로 계산되는 유효한 C++ 식입니다. | pBuffer,[bufferSize] | pBuffer를 요소 배열 bufferSize 로 표시합니다. |
| expand(n) | 정수로 계산되는 유효한 C++ 식 | pBuffer, expand(2) | 의 세 번째 요소를 표시합니다. pBuffer |
C++/CLI를 사용하여 interop 디버깅을 위한 형식 지정자
| 지정자 | 포맷 | 원래 감시 값 | 표시된 값 |
|---|---|---|---|
| o | 부호 없는 8진수 정수 | 0xF065 | 0170145 |
| x X |
16진수 정수 | 61541 | 0x0000f065 |
| c | 단일 문자 | <위치> | 101 ‘이’ |
| s | const char*(따옴표 포함) | <위치> | 안녕 세상아 |
| 슈 | const wchar_t* const char16_t*(따옴표 포함) |
<위치> | L"안녕하세요, 세계" |
| 하위 | const wchar_t* const char16_t* |
<위치> | 전 세계 여러분 안녕하세요 |
| s8 | const char*(따옴표 포함) | <위치> | 안녕 세상아 |
| hr | HRESULT 또는 Win32 오류 코드입니다. 디버거가 자동으로 디코딩하므로 HRESULT에는 이 지정자가 더 이상 필요하지 않습니다. |
S_OK | S_OK |
| 화장실 | 창 클래스 플래그 | 0x00000040 | WC_DEFAULTCHAR |
| (Assuming "wm" stands for "window manager") 윈도우 관리자 | Windows 메시지 번호 | 0x0010 | WM_CLOSE |
| ! | 원시 형식, 데이터 형식 뷰 사용자 지정 무시 | <사용자 지정된 표현> | 4 |
네이티브 및 C++/CLI 코드에 대한 d, e, f, g, h, i, l, m, ma, mb, md, mq, mu, mw, u 지정자에는 Visual Studio 2022 이상 버전에서 지원되지 않는 레거시 디버거가 필요합니다.
C++/CLI를 사용하여 interop 디버깅에서 배열로 포인터의 크기 지정자
배열로 보려는 개체에 대한 포인터가 있는 경우 정수를 사용하여 배열 요소의 수를 지정할 수 있습니다.
| 지정자 | 포맷 | Expression | 표시된 값 |
|---|---|---|---|
| n | 10진수 정수 | pBuffer[32] |
pBuffer 32개 요소 배열로 표시됩니다. |