Visual Studio调试器指南---Watch/Autos/Locals等观察窗口的格式说明符

Posted yilang

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Visual Studio调试器指南---Watch/Autos/Locals等观察窗口的格式说明符相关的知识,希望对你有一定的参考价值。

在“监视”、“自动”和“局部变量”窗口中,可以使用格式说明符更改值显示的格式。还可以在即时窗口、命令窗口、跟踪点甚至源窗口中使用格式说明符。如果在这些窗口中暂停,表达式结果将显示在数据提示中。数据提示根据格式说明符显示。

设置格式说明符

我们将使用下面的示例代码:

int main() {
    int my_var1 = 0x0065;
    int my_var2 = 0x0066;
    int my_var3 = 0x0067;
}

添加my_var1变量Watch调试时,窗口调试 > WindowsWatchWatch 1接下来,右键单击该变量,并选择十六进制显示现在监视窗口将显示值 0x0065。 若要查看此值表示为字符而不是一个整数,首先右键单击,然后取消选中十六进制显示然后在变量名后面的Name列中添加字符格式说明符c。“值”列现在显示101“e”。

技术图片

通过在监视窗口中的名称后面附加逗号(,),可以查看可用格式说明符列表并从中进行选择。

技术图片

格式说明符

下表描述了可以在Visual Studio中使用的格式说明符。新的调试器只支持粗体的说明符,而不支持用C++ /CLI进行互操作调试。

说明符格式原始监视值显示的值
d 十进制整数 0x00000066 102
o 无符号的八进制整数 0x00000066 000000000146
x

h
十六进制整数 102 0xcccccccc
X

H
十六进制整数 102 0xcccccccc
xb

hb
十六进制整数(没有前导 0x) 102 cccccccc
Xb

Hb
十六进制整数(没有前导 0x) 102 CCCCCCCC
b 无符号二进制整数 25 0b00000000000000000000000000011001
bb 无符号二进制整数(没有前导 0b) 25 00000000000000000000000000011001
E 科学记数法 25000000 2.500000e+07
g 科学记数或浮点(以较短者为准) 25000000 2.5e+07
c 单个字符 0x0065, c 101 ‘e‘
s const char * 字符串 (括在引号中) <位置 >"你好 world" "hello world"
sb const char * 字符串(无引号) <位置 >"你好 world" hello world
s8 UTF-8 字符串 <位置 >"这是 utf-8 咖啡杯 ☕" "这是 utf-8 咖啡杯 ?"
s8b UTF-8 字符串(无引号) <位置 >"你好 world" hello world
su Unicode (utf-16 编码) 字符串 (括在引号中) <location> L"hello world" L"hello world"

u"hello world"
sub Unicode(UTF-16 编码)字符串(无引号) <location> L"hello world" hello world
bstr BSTR 二进制字符串 (括在引号中) <location> L"hello world" L"hello world"
env 环境块(双空终止字符串) <位置 > L"=:: =::" L"=:: =:: = C: = C:windowssystem32ALLUSERSPROFILE =...
s32 UTF-32 的字符串 (带有引号) <位置 > U"你好 world" u"hello world"
s32b UTF-32 string (no quotation marks) <位置 > U"你好 world" hello world
en enum Saturday(6) 星期六
hv 指针类型 - 指示被检查的指针值是数组的堆分配的结果,如 new int[3] <location>{<first member>} <位置 > {<第一个成员 >,<第二个成员 >,...}
na 取消指向对象的指针的内存地址。 <location>, {member=value...} {member=value...}
nd 仅显示基类信息,忽略派生的类 (Shape*) square 包括基类和派生类信息 仅显示基类信息
hr HRESULT 或 Win32 错误代码。 Hresult 为不再需要此说明符,因为调试器自动将它们进行解码。 S_OK S_OK
wc 窗口类标志 0x0010 WC_DEFAULTCHAR
wm Windows 消息数字 16 WM_CLOSE
nr 取消“原始视图”项    
nvo 显示数值的"原始视图"项    
! 原始格式,忽略任何数据类型视图自定义项 <customized representation> 4

指针作为数组的大小说明符

如果有一个指针指向要看做数组形式的对象,则可以使用一个整数或表达式来指定数组中元素的数量。

 

说明符格式原始监视值显示的值
n 十进制或 十六进制 整数 pBuffer,[32]

pBuffer,“[0x20]”
pBuffer 显示为一个 32 元素的数组。
[exp] 计算结果为一个整数的有效的 C++ 表达式。 pBuffer,[bufferSize] 将 pBuffer 显示为 bufferSize 元素的一个数组。
expand(n) 计算结果为一个整数的有效的 C++ 表达式。 pBuffer, expand(2) 显示 pBuffer的第三个元素

用C++/CLI进行互操作调试的格式说明符

粗体 的说明符仅支持本地调试和 C++/CLI 代码。

 

说明符格式原始监视值显示的值
d

i
有符号的十进制整数 0xF000F065 -268373915
u 无符号的十进制整数 0x0065 101
o 无符号的八进制整数 0xF065 0170145
x

X
十六进制整数 61541 0x0000f065
l

h
用于 d、i、u、o、x、X 的 long 或 short 前缀 00406042 0x0c22
f 带符号的浮点 (3./2.), f 1.500000
e 有符号的科学计数法 (3.0/2.0) 1.500000e+000
g 带符号浮点数或带符号的科学记数法,
较短者为准
(3.0/2.0) 1.5
c 单个字符 <location> 101 ‘e‘
s const char * (用引号引起来) <location> "hello world"
su const wchar_t*

const char16_t* (用引号引起来)
<location> L"hello world"
sub const wchar_t*

const char16_t*
<location> hello world
s8 const char * (用引号引起来) <location> "hello world"
hr HRESULT 或 Win32 错误代码。
Hresult 为不再需要此说明符,因为调试器自动将它们进行解码。
S_OK S_OK
wc 窗口类标志 0x00000040, WC_DEFAULTCHAR
wm Windows 消息数字 0x0010 WM_CLOSE
! 原始格式,忽略任何数据类型视图自定义项 <customized representation> 4

用C++/CLI实现互操作调试中内存位置的格式说明符

下表描述了用于内存位置的格式化符号。 可将内存位置说明符与任何值或任何计算结果为某位置的表达式一起使用。

符号格式原始监视值显示的值
ma 64 个 ASCII 字符 0x0012ffac 0x0012ffac .4...0...".0W&.......1W&.0.:W..1...."..1.JO&.1.2.."..1...0y....1
m 以十六进制表示的 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 个 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 7ffdf00000000000 5f441a790012fdd4
mu 双字节字符 (Unicode) 0x0012ffac 0x0012ffac 8478 77f4 ffff ffff 0000 0000 0000 0000

用C++/CLI为互操作调试中指针数组的大小说明符

如果有一个指针指向要看做数组形式的对象,则可以使用一个整数来指定数组中元素的数量。

说明符格式表达式显示的值
n 十进制整数 pBuffer[32] pBuffer 显示为 32 个元素的数组。

以上是关于Visual Studio调试器指南---Watch/Autos/Locals等观察窗口的格式说明符的主要内容,如果未能解决你的问题,请参考以下文章

Visual Studio调试器指南---Locals窗口

Visual Studio调试器指南----Autos窗口

Visual Studio调试器指南---Threads窗口

Visual Studio调试器指南---Threads窗口

Visual Studio调试器指南---Immediate窗口

Visual Studio调试器指南---多线程应用程序调试