【问题标题】:Howto create (VC14) debug visualiser for string_view?如何为 string_view 创建 (VC14) 调试可视化工具?
【发布时间】:2016-10-22 09:11:37
【问题描述】:

我正在使用 boost::string_view。 (www.boost.org/doc/libs/1_61_0/boost/utility/string_view.hpp)

它有一个 const char* ptr_ 和一个 unsigned int len_ 数据成员。当调试它的麻烦时,因为默认的可视化器将显示 char ptr_ 的字符多于长度(因为 string_view 不是以空值结尾的)。

我尝试通过查看 std::string 可视化器来创建自己的可视化器。如果我硬编码长度(比如 4),我可以显示字符串,但我不能让它使用实际的长度变量。任何帮助表示赞赏。破例:

<?xml version="1.0" encoding="utf-8"?>
<AutoVisualizer xmlns="http://schemas.microsoft.com/vstudio/debugger/natvis/2010">
  <Type Name="boost::basic_string_view&lt;char,*&gt;" Priority="High">
    <DisplayString>{ptr_,4}</DisplayString> //works...
    <DisplayString>{ptr_,len_}</DisplayString> //doesnt work...
  </Type>
</AutoVisualizer>

【问题讨论】:

    标签: c++ visual-c++ boost visual-studio-debugging debuggervisualizer


    【解决方案1】:

    经过一整天的反复试验,我找到了令人沮丧的简单解决方案。应该是

    "{ptr_,[len_]}" 
    

    记录在这里:

    https://msdn.microsoft.com/en-us/library/windows/hardware/dn936815(v=vs.85).aspx

    我的工作示例:

    <?xml version="1.0" encoding="utf-8"?>
    <AutoVisualizer xmlns="http://schemas.microsoft.com/vstudio/debugger/natvis/2010">
      <Type Name="boost::basic_string_view&lt;char,*&gt;" Priority="High">
        <DisplayString>{ptr_,[len_]s8}</DisplayString>
        <Expand>
          <Item Name="[size]" ExcludeView="simple">len_</Item>
          <ArrayItems>
            <Size>len_</Size>
            <ValuePointer>ptr_</ValuePointer>
          </ArrayItems>
        </Expand>
      </Type>
    </AutoVisualizer>
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-10-26
      • 2011-11-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多