如何在Visual Studio调试器中通过Natvis显示boost::uuids::uuid的值?
如何在Visual Studio调试器中通过Natvis显示boost::uuids::uuid的值?
我来给你捋捋怎么搞定这个问题!在Visual Studio里用Natvis定制调试器显示,不管是boost::uuids::uuid本身还是你封装的UUID类,都能让调试时的显示清爽很多,不用再扒字节数组猜值了。
步骤1:添加或修改Natvis文件
首先,打开你的项目,右键项目名称 → 「添加」→ 「新建项」,在模板里找到「调试器可视化工具(.natvis)」,随便起个名字比如UUID.natvis添加到项目就行。如果已经有现成的Natvis文件,直接打开编辑就好。
步骤2:添加可视化规则
把下面这段XML代码粘贴到Natvis文件里,这段规则会把boost的uuid直接显示成标准的UUID字符串格式,同时还能展开查看原始字节数组;针对你自己的UUID类,也能直接关联显示内部的uuid值:
<?xml version="1.0" encoding="utf-8"?> <AutoVisualizer xmlns="http://schemas.microsoft.com/vstudio/debugger/natvis/2010"> <!-- 可视化boost::uuids::uuid本身 --> <Type Name="boost::uuids::uuid"> <DisplayString Condition="!IsNull()">{data[0]:X2}{data[1]:X2}{data[2]:X2}{data[3]:X2}-{data[4]:X2}{data[5]:X2}-{data[6]:X2}{data[7]:X2}-{data[8]:X2}{data[9]:X2}-{data[10]:X2}{data[11]:X2}{data[12]:X2}{data[13]:X2}{data[14]:X2}{data[15]:X2}</DisplayString> <DisplayString Condition="IsNull()">[Null UUID]</DisplayString> <Expand> <Item Name="原始字节数组">data[0..15]</Item> <Item Name="格式化UUID字符串">{data[0]:X2}{data[1]:X2}{data[2]:X2}{data[3]:X2}-{data[4]:X2}{data[5]:X2}-{data[6]:X2}{data[7]:X2}-{data[8]:X2}{data[9]:X2}-{data[10]:X2}{data[11]:X2}{data[12]:X2}{data[13]:X2}{data[14]:X2}{data[15]:X2}</Item> </Expand> </Type> <!-- 可视化你自己封装的UUID类 --> <Type Name="UUID"> <!-- 假设你的UUID类内部有个成员变量叫m_uuid,类型是boost::uuids::uuid,记得改成你实际的成员名 --> <DisplayString>{m_uuid}</DisplayString> <Expand> <Item Name="UUID值">m_uuid</Item> <!-- 可以直接关联你类里的方法,显示对应的文本和字节数组 --> <Item Name="文本形式" ExcludeView="raw">getText()</Item> <Item Name="字节数组形式" ExcludeView="raw">getByteArray()</Item> </Expand> </Type> </AutoVisualizer>
一些要注意的小细节
- 要是你的
UUID类内部的boost uuid成员变量名字不是m_uuid,一定要改成你实际用的变量名,不然Natvis会找不到对应的成员。 - 保存Natvis文件后,得重启一下调试会话(或者重新编译项目),新的可视化规则才会生效。
- 调试的时候,悬停在
UUID对象或者boost::uuids::uuid对象上,就能直接看到格式化好的UUID字符串,展开还能查看字节数组或者其他关联内容,比原来只显示一堆字节直观多了!
备注:内容来源于stack exchange,提问作者Jepessen
相关产品推荐
相关产品推荐

