서식 지정자를 사용하여 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 코드 디버깅에만 지원됩니다. 이러한 지정자에는 관리되는 호환성 모드를 사용하여 지정된 레거시 디버거가 필요합니다.
| 지정자 | 포맷 | 원래 감시 값 | 표시된 값 |
|---|---|---|---|
|
d i |
부호 있는 10진수 정수 | 0xF000F065 | -268373915 |
| u | 부호 없는 10진수 정수 | 0x0065 | 101 |
| o | 부호 없는 8진수 정수 | 0xF065 | 0170145 |
| x X |
16진수 정수 | 61541 | 0x0000f065 |
|
l h |
긴 또는 짧은 접두사: d, i, u, o, x, X | 00406042 | 0x0c22 |
| f | 부호 있는 부동 소수점 | (3./2.), f | 1.500000 |
| e | 서명된 과학적 표기법 | (3.0/2.0) | 1.500000e+000 |
| g | 부동 소수점 또는 서명된 과학적 표기법, 더 짧은 것 중 하나 |
(3.0/2.0) | 1.5 |
| 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를 사용하여 interop 디버깅의 메모리 위치에 대한 형식 지정자
다음 표에서는 메모리 위치에 사용되는 서식 기호에 대해 설명합니다. 위치로 계산되는 값이나 식과 함께 메모리 위치 지정자를 사용할 수 있습니다.
굵게 표시된 지정자는 네이티브 및 C++/CLI 코드 디버깅에만 지원됩니다. 이를 위해서는 관리되는 호환성 모드를 사용하여 지정된 레거시 디버거가 필요합니다.
| 기호 | 포맷 | 원래 감시 값 | 표시된 값 |
|---|---|---|---|
| 엄마 | 64개 ASCII 문자 | 0x0012ffac | 0x0012ffac .4...0...". 0W&....... 1W.0.:W.. 1....".. 1.JO&.1.2..". 1...0y.... 1 |
| m | 16바이트는 16진수 형식으로, 다음으로 16개의 ASCII 문자 | 0x0012ffac | 0x0012ffac B3 34 CB 00 84 30 94 80 FF 22 8A 30 57 26 00 00 .4...0...".0W&.. |
| mb | 16바이트는 16진수 형식으로, 다음으로 16개의 ASCII 문자 | 0x0012ffac | 0x0012ffac B3 34 CB 00 84 30 94 80 FF 22 8A 30 57 26 00 00 .4...0...".0W&.. |
| mw | 8단어 | 0x0012ffac | 0x0012ffac 34B3 00CB 3084 8094 22FF 308A 2657 0000 |
| md | 이중 단어 4개 | 0x0012ffac | 0x0012ffac 00CB34B3 80943084 308A22FF 00002657 |
| mq | 2개의 쿼드워드 | 0x0012ffac | 0x0012ffac 7ffdf00000000000000 5f441a790012fdd4 |
| 뮤 | 2 바이트 문자(유니코드) | 0x0012ffac | 0x0012ffac 8478 77f4 ffff ffff 0000 0000 0000 0000 |
C++/CLI를 사용하여 interop 디버깅에서 배열로 포인터의 크기 지정자
배열로 보려는 개체에 대한 포인터가 있는 경우 정수를 사용하여 배열 요소의 수를 지정할 수 있습니다.
| 지정자 | 포맷 | Expression | 표시된 값 |
|---|---|---|---|
| n | 10진수 정수 | pBuffer[32] |
pBuffer 32개 요소 배열로 표시됩니다. |