【问题标题】:How to get std::pair<char *, char *> to display as a proper string segment in Visual Studio's debugger?如何让 std::pair<char *, char *> 在 Visual Studio 的调试器中显示为正确的字符串段?
【发布时间】:2018-03-21 21:42:25
【问题描述】:

如何让std::pair&lt;char *, char *&gt; 在 Visual Studio 中显示为正确的字符串段,而不是显示为指向以空字符结尾的字符串的两个指针?

【问题讨论】:

  • 有趣的是如何修改 MSVC 调试器的显示方式,即使对于 C++17+,此特定数据类型应替换为 std::string_view
  • @Deduplicator:是的,我知道有人会这么说……
  • 很高兴为您服务。

标签: c++ visual-studio visual-c++ debuggervisualizer natvis


【解决方案1】:

创建%UserProfile%\Documents\Visual Studio 2015\Visualizers\custom.natvis(显然,将2015 替换为您的Visual Studio 版本),然后尝试以下操作:

<?xml version='1.0' encoding='utf-8'?>
<AutoVisualizer xmlns="http://schemas.microsoft.com/vstudio/debugger/natvis/2010">
  <!-- For more information on how to create debugger visualizers, refer to:
       https://msdn.microsoft.com/en-us/library/jj620914.aspx
       https://msdn.microsoft.com/en-us/library/75w45ekt.aspx
  -->
  <Type Name="std::pair&lt;*,*&gt;">
      <DisplayString Condition="*second - *first &gt;= 0">{first,[second - first]}</DisplayString>
  </Type>
  <Type Name="std::pair&lt;*,*&gt;">
      <DisplayString Condition="*second._Ptr - *first._Ptr &gt;= 0">{first._Ptr,[second._Ptr - first._Ptr]}</DisplayString>
  </Type>
</AutoVisualizer>

结果:

【讨论】:

    猜你喜欢
    • 2020-02-13
    • 2012-05-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-07-19
    • 2017-04-13
    • 2020-04-23
    • 1970-01-01
    相关资源
    最近更新 更多