我已经下载并安装了cppvisualizers,以便在Visual Studio 2012中更好地处理boost数据结构。
https://cppvisualizers.codeplex.com/
它不支持boost::numeric::ublas::vector和boost::numeric::ublas::matrix,所以我尝试按照这里提供的关于natvis支持的说明进行操作:http://code.msdn.microsoft.com/windowsdesktop/Writing-type-visualizers-2eae77a2
我已经在\Program Files (x86)\Microsoft Visual Studio11.0\Common7\Packages\Debugger\Visualizers中添加了一个名为ublas.natvis的文件。它包含以下代码:
<?xml version="1.0" encoding="utf-8"?>
<AutoVisualizer xmlns="http://schemas.microsoft.com/vstudio/debugger/natvis/2010">
<Type Name="boost::numeric::ublas::vector<*>">
<DisplayString>"UBLAS Vector: Test Failure"</DisplayString>
<Expand>
<Item Name="[size]">_Mylast - _Myfirst</Item>
<Item Name="[capacity]">_Myend - _Myfirst</Item>
<ArrayItems>
<Size>_Mylast - _Myfirst</Size>
<ValuePointer>_Myfirst</ValuePointer>
</ArrayItems>
</Expand>
</Type>
<Type Name="std::vector<*>">
<DisplayString>"STD Vector: Test Success"</DisplayString>
<Expand>
<Item Name="[size]">_Mylast - _Myfirst</Item>
<Item Name="[capacity]">_Myend - _Myfirst</Item>
<ArrayItems>
<Size>_Mylast - _Myfirst</Size>
<ValuePointer>_Myfirst</ValuePointer>
</ArrayItems>
</Expand>
</Type>
</AutoVisualizer>可视化工具能够成功地检测到std::vector的自定义字符串。然而,当我将鼠标悬停在boost::numeric::ublas::vector上时,我就没那么幸运了。你能指导我设置调试器可视化工具的升压矢量和矩阵。
谢谢你的帮助。
发布于 2012-11-13 21:33:45
你应该像你的文章(http://code.msdn.microsoft.com/windowsdesktop/Writing-type-visualizers-2eae77a2)中描述的那样,为Visual Studio2012启用Natvis诊断,这对我调试cppvisualizers有很大帮助。
更新:
矢量和矩阵的可视化工具(只需在%USERPROFILE%\My Documents\Visual Studio 2012\Visualizers\中创建包含此内容的.natvis文件)
<?xml version='1.0' encoding='utf-8'?>
<AutoVisualizer xmlns="http://schemas.microsoft.com/vstudio/debugger/natvis/2010">
<Type Name="boost::numeric::ublas::unbounded_array<*,*>">
<DisplayString>{{ size={size_} }}</DisplayString>
<Expand>
<Item Name="[size]">size_</Item>
<ArrayItems>
<Size>size_</Size>
<ValuePointer>data_</ValuePointer>
</ArrayItems>
</Expand>
</Type>
<Type Name="boost::numeric::ublas::vector<*>">
<DisplayString>{data_}</DisplayString>
<Expand>
<ExpandedItem>data_</ExpandedItem>
</Expand>
</Type>
<Type Name="boost::numeric::ublas::matrix<*>">
<DisplayString>{{ size={size1_}x{size2_} }}</DisplayString>
<Expand>
<ExpandedItem>data_</ExpandedItem>
</Expand>
</Type>
</AutoVisualizer>发布于 2012-11-03 05:17:12
请尝试使用<Type Name="boost::numeric::ublas::vector<*,*>">。
https://stackoverflow.com/questions/13202157
复制相似问题