如何让 std::pair<char *, char *> 在 Visual Studio 的调试器中显示为正确的字符串段?
Posted
技术标签:
【中文标题】如何让 std::pair<char *, char *> 在 Visual Studio 的调试器中显示为正确的字符串段?【英文标题】:How to get std::pair<char *, char *> to display as a proper string segment in Visual Studio's debugger? 【发布时间】:2018-03-21 21:42:25 【问题描述】:如何让std::pair<char *, char *>
在 Visual Studio 中显示为正确的字符串段,而不是显示为指向以空字符结尾的字符串的两个指针?
【问题讨论】:
有趣的是如何修改 MSVC 调试器的显示方式,即使对于 C++17+,此特定数据类型应替换为std::string_view
。
@Deduplicator:是的,我知道有人会这么说……
很高兴为您服务。
【参考方案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<*,*>">
<DisplayString Condition="*second - *first >= 0">first,[second - first]</DisplayString>
</Type>
<Type Name="std::pair<*,*>">
<DisplayString Condition="*second._Ptr - *first._Ptr >= 0">first._Ptr,[second._Ptr - first._Ptr]</DisplayString>
</Type>
</AutoVisualizer>
结果:
【讨论】:
以上是关于如何让 std::pair<char *, char *> 在 Visual Studio 的调试器中显示为正确的字符串段?的主要内容,如果未能解决你的问题,请参考以下文章