티스토리 뷰
int i = 0x12345678;
이런 값이 있을 때 디버거 창에서 해당 변수 이름 앞에다 by, wo, dw을 붙이면 변수의 값을 BYTE, WORD, DWORD 형식으로 볼 수 있다. 레지스터값도 마찬가지.
i | 0x12345678 | int
by i | 0x78 'x' | unsigned char
wo i | 0x5678 | unsigned short
dw i | 0x12345678 | unsigned long
변수를 8진수, 10진수, 16진수로 보기 위해서는 포맷 지정자를 이용한다.
i | 42 | int
i,o | 052 | int
i,d | 42 | int
i,x | 0x0000002a | int
포인터 변수를 문자열 형태로 보려면 "s", "s8", "su"를 이용한다. 각각 그냥 문자열, UTF-8 문자열, 유니코드 문자열을 의미한다.
char str[] = "hello";
wchar_t str2[] = L"world";
str | 0x0012ff00 "hello" | char [6]
str,s | "hello" | char [6]
str2 | 0x0012fee8 "world" | wchar_t [6]
(void*)str2,su | "world" | void *
"m" 글자를 붙이면 해당 변수의 주소로부터 64 바이트까지를 쭉 볼 수 있다.
str,m | 0x0012ff00 68 65 6c 6c 6f 00 cc cc cc cc cc cc cc cc cc cc hello. | char [6]
str,mb | 0x0012ff00 68 65 6c 6c 6f 00 cc cc cc cc cc cc cc cc cc cc hello. | char [6]
str,mw | 0x0012ff00 6568 6c6c 006f cccc cccc cccc cccc cccc | char [6]
str,md | 0x0012ff00 6c6c6568 cccc006f cccccccc cccccccc | char [6]
str2,mu | 0x0012feec 0077 006f 0072 006c 0064 0000 cccc cccc world.?? | wchar_t [6]
str,mq | 0x0012ff00 cccc006f6c6c6568 cccccccccccccccc | char [6]
str,ma | 0x0012ff00 hello.(..(......T.. | char [6]
"wc", "wm", "hr"은 각각 윈도우 클래스, 윈도우 메시지, HRESULT를 의미한다.
0x00400000,wc | WS_OVERLAPPEDWINDOW | int
0x10,wm | WM_CLOSE | int
0x10,hr | 0x00000010 The directory cannot be removed. | int
"!" 연산자를 이용하면 STL Visualization을 끌 수 있다.
str | "hello world" | std::basic_string< ... >
str,! | {_Bx={...} _Mysize=0x0000000b _Myres=0x0000000f} | std::basic_string<...>