- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
我已经下载并安装了 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 Studio 11.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 上时,运气不佳。您能否指导我为 boost vector 和矩阵设置调试器可视化工具。
感谢您的帮助。
最佳答案
您应该为 Visual Studio 2012 启用 Natvis 诊断,如您的文章 (http://code.msdn.microsoft.com/windowsdesktop/Writing-type-visualizers-2eae77a2) Natvis 诊断中所述,这对我调试 cppvisualizers 有很大帮助。
更新:
vector 和矩阵的可视化器(只需在 %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>
关于c++ - Natvis Visual Studio 2012 Boost vector 和矩阵,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13202157/
我从这里实现了元组:https://voidnish.wordpress.com/2013/07/13/tuple-implementation-via-variadic-templates/ 是否可
我们经常为枚举使用前缀。 在 NatVis 中显示全名非常冗长。 是否可以删除枚举名称的前缀(又名返回枚举名称的子字符串)? enum FooFormat { FooFormat_Foo, F
我正在尝试为部分专用类型创建 Visual Studio 调试可视化工具。例如,假设我有这样的东西: template struct Foo { T bar; }; template st
我正在尝试创建一个 .natvis Visual Studio 的文件。根据这个page我可以使用 $T1, $T2 引用模板参数等等。所以在 MyClass 的情况下$T1将引用类型 A .这行得通
natvis 中有没有一种方法可以将类型重新解释为已经由 natvis 定义的类型?还是别名? 例如,我想做这种“技巧”(在我的上下文中确实是必要的,即使这对您来说听起来很奇怪,这是 JIT 符号生成
我正在尝试为 uint32_t 类型定义一个 .natvis ,以显示为一个包含四个字符的数组,在调试期间,在 Watch 窗口中,它会被表示为一点像这样:(char*)&fourcc,4。 不幸的是
我刚刚了解了 Visual Studio 中的 .natvis 文件,并且一直在为我的 Ruby C++ 扩展项目设置一些文件。 http://msdn.microsoft.com/en-us/lib
昨天我发现MSVC's "Natvis" tool ,它允许您调整调试器以智能方式呈现您的类型。我很快开始美化我的数学库。 这是我的 3*3 矩阵类的外观(未初始化的数据): 很漂亮,对吧?我的下午没
我目前正在为 natvis 中的日期类型编写可视化工具。日期类型以通常的 unix 方式存储自 1970 年以来的秒数,但如果不使用临时变量,从中导出年、月和月的日期会非常冗长。我希望能够存储工作变量
假设我必须遵循结构: template struct TSH2SizedArray { inline void Add(const Type & Value); inline Type
我有一个类型定义为: typedef unsigned short StringChecksum; 我最终打算使用 NatVis 在我们加载到内存中的全局字符串表中显示相应的值。 所以我定义了一个新的
VS2013 中 shared_ptr 的默认可视化工具有这个(很多很多东西被删除了!): _Ptr 这意味着在调试器中,您必须展开 shared_ptr,然后展开 [ptr]
我无法在调试时对 VS2015 中的基本 std:string 有一个像样的 View 。我按照此地址给出的说明进行操作:https://msdn.microsoft.com/fr-fr/librar
我正在尝试使用在 natvis.xsd(natvis 模式文件)中定义的标签来编写 C# 或 C++ 代码来可视化类型。我找不到任何关于此的文档,所以我不确定它是如何工作的。特别是我需要为 Custo
我正在使用 Visual Studio 2017 为某些类编写可视化工具,但遇到了 .natvis 代码可读性方面的问题。我有一个自定义数组类型,我想在 Watch 窗口的 Value 字段中直接显示
我正在使用 VS Ultimate 2012 Update 5: Microsoft Visual Studio Ultimate 2012 版本 11.0.61219.00 更新 5 微软 .NET
我有一个自定义数据结构,其中包含一个 char* 缓冲区,该缓冲区具有两个关联的长度:最大长度和实际长度: struct MyData { char* data; int length;
我正在 Microsoft Visual Studio 2015 中使用 .natvis 文件编写调试器可视化工具。如果可能的话,我想在我的类(class)中获得一条信息。我想知道获取该变量的语法是什
我正在为 visual studio 2012 编写一个 natvis 文件,以帮助自定义调试时显示的内容。我正在尝试将 void* 转换为模板类,但我看到以下错误: Fatal error: Ele
我正在尝试在 Visual Studio 2013 调试器中显示一个矩阵类。该类(class)的相关部分是这样的: class mat { private: size_t rowdim, co
我是一名优秀的程序员,十分优秀!