您的位置:首页 > 编程语言 > C语言/C++

Visual C++ 调试技巧: 从变量查看窗口获取更多信息

2010-06-09 13:37 519 查看
在Visual C++调试中,我们经常需要在变量监视窗口中看到更多的信息。比如,我们定义了int类型的指针,该指针指向了好几个int大小的内存区域,我们希望看到的变量信息是整个数组,而不是只有指针指向的那个数字。又如,我们在调试Windows消息时,想知道的是消息的宏定义字符串(姑且让这么说吧),如WM_CLOSE,而不是生硬的数字。还有更多……

这些都很容易做到,只是您可能不知道。先上图吧,注意看监视窗口中变量内容显示的格式。

为查看消息的内容,只需要在变量名后面添加“
, wm”就能显示消息的名字。

查看句柄的返回值和错误代码,只需要在变量名的后面添加“, hr”即可显示返回值的意义和错误信息。

是不是很方便呢?下图的后面给出了MSDN上关于变量格式的链接及其内容摘要,相信您阅读后将受益颇多。



“监视”窗口或“快速监视”对话框中调试本机代码时使用格式说明符更改值的显示格式: ms-help://MS.VSCC.v90/MS.MSDNQTR.v90.chs/dv_vsdebug/html/0f6f3b7c-ce2c-4b4d-b14f-7589dbed5444.htm

为便于大家查看,下面复制了MSDN中的内容。

下表说明调试器可识别的格式说明符。

说明符


格式


表达式


显示的值


d,i

signed
十进制整数

0xF000F065, d

-268373915

u

unsigned
十进制整数

0x0065, u

101

o

unsigned
八进制整数

0xF065, o

0170145

x,X

十六进制整数

61541, x

0x0000F065

l,h

用于
d

i

u

o

x

X

long

short
前缀

00406042,hx

0x0c22

f

signed
浮点型

(3./2.), f

1.500000

e

signed
科学计数法

(3./2.), e

1.500000e+000

g

signed
浮点型或
signed
科学计数法,显示其中较短的数

(3./2.), g

1.5

c

单个字符

0x0065, c

101 'e'

s

字符串

0x0012fde8, s

"Hello world"

su

Unicode
字符串

0x0012fde8, su

"Hello world"

s8

UTF-8
字符串

0x0012fde8, s8

"Hello world"

hr

HRESULT

Win32
错误代码。(调试器自动将
HRESULT
解码,因此这些情况下不需要该说明符。)

0x00000000L, hr

S_OK

wc

窗口类标志。

0x00000040, wc

WC_DEFAULTCHAR

wm

Windows
消息数字

0x0010, wm

WM_CLOSE

!

原始格式,忽略任何数据类型视图自定义项

i !

4

下表包含用于内存位置的格式化符号。可以使用带有计算为位置的任何值或表达式的内存位置说明符。

符号


格式


表达式


显示的值


ma

64

ASCII
字符

ptr, ma

0x0012ffac
.4...0...".0W&.......1W&.0.:W..1...."..1.JO&.1.2.."..1...0y....1

m

以十六进制表示的
16
个字节,后跟
16

ASCII
字符

ptr, m

0x0012ffac B3 34 CB 00
84 30 94 80 FF 22 8A 30 57 26 00 00 .4...0...".0W&..

mb

以十六进制表示的
16
个字节,后跟
16

ASCII
字符

ptr, mb

0x0012ffac B3 34 CB 00
84 30 94 80 FF 22 8A 30 57 26 00 00 .4...0...".0W&..

mw

8
个字

ptr, mw

0x0012ffac 34B3 00CB
3084 8094 22FF 308A 2657 0000

md

4
个双倍长字

ptr, md

0x0012ffac 00CB34B3
80943084 308A22FF 00002657

mq

2
个四倍长字

ptr, mq

0x0012ffac
7ffdf00000000000 5f441a790012fdd4

mu

2
字节字符
(Unicode)

ptr, mu

0x0012fc60 8478 77f4
ffff ffff 0000 0000 0000 0000

查找替换中的正则表达式也是很有用的,但这里的正则表达式和我们编程用到的正则表达式有所不同
,参见 ms-help://MS.VSCC.v90/MS.MSDNQTR.v90.chs/dv_vsnav/html/718a617d-0e05-47e1-a218-9746971527f4.htm
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: