你可以使用格式说明符更改在“监视”、“自动”和“局部变量”窗口中显示的值所用的格式。
还可在“即时”窗口、“命令”窗口、
跟踪点
甚至源窗口中使用格式说明符。 如果将鼠标悬停在这些窗口中的某个表达式上,结果将在
数据提示
中显示。 “数据提示”显示格式说明符。
在 Visual Studio 本机调试器更改为新的调试引擎时,添加了一些新的格式说明符,并删除了一些旧的格式说明符。 当你使用 C++/CLI 进行互操作(混合本机和托管)调试时,仍使用较早的调试器。
我们将使用以下示例代码:
int main() {
int my_var1 = 0x0065;
int my_var2 = 0x0066;
int my_var3 = 0x0067;
调试期间,将 my_var1
变量添加到“监视”窗口,“调试”>“窗口”>“监视”>“监视 1”。 接下来,右键单击变量,然后选择“十六进制显示”。 现在,“监视”窗口显示值 0x0065。 若要查看以字符而不是整数形式表达的此值,请先右键单击并取消选择“十六进制显示”。 然后,在“名称”列的变量名称之后添加字符格式说明符“, c”。 现在,“值”列显示“101 'e'”。
可以通过将逗号 (,) 追加到“监视”窗口中的值来查看可用格式说明符列表并从中进行选择。
下表介绍可以在 Visual Studio 中使用的格式说明符。 仅新调试器支持加粗的说明符,但 C++/CLI 的互操作调试不支持。
环境块(双空终止字符串)
<location> L"=::=::\\"
L"=::=::\\\0=C:=C:\\windows\\system32\0ALLUSERSPROFILE=...
UTF-32 字符串(加引号)
<location> U"hello world"
u"hello world"
UTF-32 string (no quotation marks)
<location> U"hello world"
hello world
Saturday(6)
指针类型 - 指示被检查的指针值是数组的堆分配的结果,如 new int[3]
。
<location>{<first member>}
<location>{<first member>, <second member>, ...}
取消指向对象的指针的内存地址。
<location>, {member=value...}
{member=value...}
仅显示基类信息,忽略派生的类
(Shape*) square
包括基类和派生类信息
仅显示基类信息
HRESULT 或 Win32 错误代码。 HRESULT 不再需要此说明符,因为调试器会自动对其进行解码。
窗口类标志
0x0010
WC_DEFAULTCHAR
Windows 消息数字
WM_CLOSE
取消“原始视图”项
如果存在 hv 格式说明符,调试器会尝试确定缓冲区的长度并显示相应的元素数。 由于调试器并非总是可以查找确切的数组缓冲区大小,只要可能时,就应该使用大小说明符 (pBuffer,[bufferSize])
。 当缓冲区大小尚不可用时,hv 格式说明符很有用。
指针的大小说明符作为数组
如果有一个指针指向要看做数组形式的对象,则可以使用一个整数或表达式来指定数组中元素的数量。
原始监视值
本机和 C++/CLI 代码的 d、e、f、g、h、i、l、m、ma、mb、md、mq、mu、mw 和 u 说明符需要旧调试器,这在 Visual Studio 2022 或更高版本中不受支持。
粗体 的说明符仅支持本地调试和 C++/CLI 代码。 这些说明符需要使用托管兼容模式指定的旧版调试器。
原始监视值
64 个 ASCII 字符
0x0012ffac
0x0012ffac .4...0...".0W&.......1W&.0.:W..1...."..1.JO&.1.2.."..1...0y....1
以十六进制表示的 16 个字节,后跟 16 个 ASCII 字符
0x0012ffac
0x0012ffac B3 34 CB 00 84 30 94 80 FF 22 8A 30 57 26 00 00 .4...0...".0W&.
以十六进制表示的 16 个字节,后跟 16 个 ASCII 字符
0x0012ffac
0x0012ffac B3 34 CB 00 84 30 94 80 FF 22 8A 30 57 26 00 00 .4...0...".0W&.
0x0012ffac
0x0012ffac 34B3 00CB 3084 8094 22FF 308A 2657 0000
4 个双字
0x0012ffac
0x0012ffac 00CB34B3 80943084 308A22FF 00002657
2 个双字
0x0012ffac
0x0012ffac 7ffdf00000000000 5f441a790012fdd4
双字节字符 (Unicode)
0x0012ffac
0x0012ffac 8478 77f4 ffff ffff 0000 0000 0000 0000