c++ - 如何让 std::pair<char *, char *> 在 Visual Studio 的调试器中显示为正确的字符串段?

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

我如何获得 std::pair<char *, char *>在 Visual Studio 中显示为正确的字符串段,而不是显示为两个指向空终止字符串的指针?

最佳答案

创建 %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>

结果:

Screenshot

关于c++ - 如何让 std::pair<char *, char *> 在 Visual Studio 的调试器中显示为正确的字符串段?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49416995/

相关文章:

c++ - 动态链接库 (C/C++) 中静态变量的行为

winapi - 关于 ReadFile() WinAPI,GetLastError 抛出错误 183。在这种情况下, "ERROR_ALREADY_EXISTS"是什么意思?

c++ - MSVC 中的 ODR 错误?

c++ - C++中的数据框库

c++ - 该递归函数如何工作?

c++ - 网络 2D 游戏的滞后补偿

visual-studio - 我怎样才能拍一张我的数据库 Entity Framework 模型的照片供人们引用?

c++ - LNK2019:VS 单元测试中未解析的外部符号

c# - WPF 为绑定(bind)的 ComboBox 更正编程绑定(bind)

visual-c++ - 如何禁用 MFC 中的最大化按钮?