辽宁建设官方网站,wordpress 多站点开启,西安网站建设模板,金湖县建设局网站缘起 最近在调试的时候#xff0c;需要观察第三方容器中每一个元素的值。默认情况下#xff0c;vs 并不知道如何显示第三方容器的内容#xff0c;只能手动观察容器中的每一个值#xff0c;超级不方便。我找到一个非常给力的好办法#xff0c;你还知道其它好办法吗#xf…缘起 最近在调试的时候需要观察第三方容器中每一个元素的值。默认情况下vs 并不知道如何显示第三方容器的内容只能手动观察容器中的每一个值超级不方便。我找到一个非常给力的好办法你还知道其它好办法吗为了更直观的感受这种便利我特意截图对比了三种常用的观察变量的方法。直接观察 1、通过 vs 的悬浮提示观察。小贴士把鼠标移动到对应的变量即可。可以发现现在 vs 并不知道如何解析 pts 的内容只能 “傻傻” 的显示出 bvector 中的三个成员。2、通过 watch 窗口观察。小贴士可以使用快捷键 ctrl alt w, 1 来打开第一个 watch 窗口。据我观察最多支持 4 个 watch 窗口。可以发现我们可以在代码中使用的 at(index) 和 [index] 已经失效了只能使用蹩脚的 (pts._C_alloc)._C_begin index 来观察对应的变量反人类有木有。你也许好奇我是怎么知道可以使用 (pts._C_alloc)._C_begin index 来观察的简单在悬浮提示中右键复制表达式(X)如下图3、通过 quick watch 窗口观察。小贴士可以选中要观察的变量然后按快捷键 shift f9 打开快速监视窗口。同样没什么用。难道只能这么低效吗vs2012 之前是的但是事情从 vs2012 发生了变化。从 vs2012 开始vs 支持通过 natvis 来观察变量超级方便。话不多说开启 natvis 后再使用上面的三种方法观察同样的变量。开启 natvis 后观察 1、通过 vs 的悬浮提示观察。2、通过 watch 窗口观察。3、通过 quick watch 窗口观察。有木有很方便要是很多元素要观察比如有 128 或者 1024 个是不是可以节省很多时间如何开启 可以自己编写 .natvis文件并放到指定目录下重启 vs 后即可加载。请原谅我比较懒直接从官方文档上摘录了一段更多内容可以参考文末给出的参考链接。搜索位置及顺序转载如下[1]If multiple valid entries are encountered for the same type, the first one in the following list will be used:PDBProject/solutionUser directory: %USERPROFILE%My DocumentsVisual Studio 2015VisualizersInstall directory: %VSINSTALLDIR%Common7PackagesDebuggerVisualizers我放到了 %USERPROFILE%My DocumentsVisual Studio 2013Visualizers 下。提示 在高版本的 vs 中vs2017/vs2019 vs2015 没亲自确认可以自动重新加载修改的 .natvis 文件内容但是 vs2012/vs2013 并不支持动态加载。排错 如果 natvis 加载有问题可以通过设置注册表开启诊断信息[2][HKEY_CURRENT_USERSoftwareMicrosoftVisualStudio11.0_ConfigDebugger]
EnableNatvisDiagnosticsdword:00000001
windbg 中的 natvis windbg 中也可以使用 dx 命令来进行一些高级查看超级超级厉害的 dx 命令具体参考 defrag tools 上的视频。Defrag Tools #138 - Debugging - dx Command Part 1[3]Defrag Tools #139 - Debugging - dx Command Part 2[4]最后附上文中用到的 .natvis 文件大家可以做个参考。示例 ?xml version1.0 encodingutf-8?
AutoVisualizer xmlnshttp://schemas.microsoft.com/vstudio/debugger/natvis/2010!--from bvector --Type NameBentley::Bstdcxx::bvectorlt;*gt; DisplayString{{size {_C_alloc._C_end - _C_alloc._C_begin}}}/DisplayString Expand Item Name[size]_C_alloc._C_end - _C_alloc._C_begin/Item Item Name[capacity](_C_alloc._C_bufend - _C_alloc._C_begin)/Item ArrayItems Size_C_alloc._C_end - _C_alloc._C_begin/Size ValuePointer_C_alloc._C_begin/ValuePointer /ArrayItems /Expand /Type
/AutoVisualizer
总结 调试时鼠标悬停到对应的变量上可以通过悬浮提示观察变量的值。使用 ctr alt w,1 可以快速打开 watch 1 窗口。鼠标悬浮到变量上按 shift f9 可以打开快速观察窗口。.natvis 文件可以让我们个性化的观察变量可以极大的提高我们的调试效率。在高版本的 vs 中我们甚至可以动态编辑 .natvis 文件的内容更加灵活的观察变量。windbg 中的 dx 命令可谓神器但是本文并未介绍感兴趣的小伙伴儿可以直接看视频参考资料 https://blogs.msdn.microsoft.com/vcblog/2015/09/28/debug-visualizers-in-visual-c-2015/https://blogs.msdn.microsoft.com/vcblog/2014/06/12/project-support-for-natvis/https://docs.microsoft.com/en-us/cpp/build/reference/natvis-add-natvis-to-pdb?viewvs-2017https://docs.microsoft.com/en-us/visualstudio/debugger/create-custom-views-of-native-objects?viewvs-2017https://social.msdn.microsoft.com/Forums/vstudio/en-US/6e4a67f8-1239-4b3c-af45-f5ea5ea41e80/enabling-natvis-diagnostic-modehttps://stackoverflow.com/questions/17811628/user-defined-natvis-files-in-visual-studio-2012参考资料[1] 搜索位置及顺序转载如下: https://blogs.msdn.microsoft.com/vcblog/2015/09/28/debug-visualizers-in-visual-c-2015/[2] 开启诊断信息: https://social.msdn.microsoft.com/Forums/vstudio/en-US/6e4a67f8-1239-4b3c-af45-f5ea5ea41e80/enabling-natvis-diagnostic-mode[3] Defrag Tools #138 - Debugging - dx Command Part 1: https://channel9.msdn.com/Shows/Defrag-Tools/Defrag-Tools-138-Debugging-dx-Command-Part-1[4] Defrag Tools #139 - Debugging - dx Command Part 2: https://channel9.msdn.com/Shows/Defrag-Tools/Defrag-Tools-139-Debugging-dx-Command-Part-2