天道酬勤,学无止境

natvis

如何使用 natvis 可视化一个简单的 std::string?(How to visualise a simple std::string with natvis?)

问题 在调试时,我无法对 VS2015 中的基本 std:string 有一个体面的看法。 我按照此地址给出的说明进行操作:https://msdn.microsoft.com/fr-fr/library/jj620914.aspx(即调试器类型设置为本机模式,并取消选中Use Managed Compatibility Mode和Use Native Compatibility Mode )。 我还将 stl.nativs 文件添加到我的解决方案中。 目前我的调试器看起来像: 我希望将我的变量str直接“测试”为一个值(而不是一个非常复杂的树)。 你能帮我解决这个问题吗? 回答1 我找到了答案,因为一个非常奇怪的原因是我在 VS 安装目录中找到的 stl.natvis 文件( C:\Program Files (x86)\Microsoft Visual Studio 14.0\Common7\Packages\Debugger\Visualizers for me )和那个我已添加到我的项目中,但调试器无法自动识别。 因此,解决方案是将另一个Debugger visualization file (.natvis)到我的解决方案中(右键单击 -> 添加新项目),并将stl.natvis文件的内容复制/ stl.natvis到这个新文件中。 重建后,调试器会适当地显示标准 std

2021-10-08 16:03:28    分类:技术分享    c++   debugging   visual-studio-2015   natvis

使用 .natvis 文件在 Visual Studio 2015 中自定义多维数组调试(customize multi-dimension array debugging in visual studio 2015 with .natvis file)

问题 我正在使用 arma Matrix,我想在调试期间查看该值。 所以我添加了一个 natvis 文件,如下所示: <?xml version="1.0" encoding="utf-8"?> <AutoVisualizer xmlns="http://schemas.microsoft.com/vstudio/debugger/natvis/2010"> <Type Name="arma::Mat<*>"> <DisplayString>{{ Size = {n_rows} x {n_cols} }}</DisplayString> <Expand> <Item Name="[size]">n_elem</Item> <ArrayItems> <Direction>Backward</Direction> <Rank>2</Rank> <Size> $i==0?n_rows:n_cols </Size> <ValuePointer>mem</ValuePointer> </ArrayItems> </Expand> </Type> </AutoVisualizer> 但是,它根本不起作用。 我很快就会意识到问题可能是 <Size> $i==0?n_rows:n_rows </Size> 所以我尝试用以下任何语句替换它并且它有效 <size> $i==0?5:8 </Size>

2021-10-08 15:43:47    分类:技术分享    c++   debugging   multidimensional-array   visual-studio-2015   natvis

Visual Studio 和 Natvis 不工作(Visual Studio & Natvis not working)

问题 我正在使用 VS Ultimate 2012 Update 5 : 微软 Visual Studio Ultimate 2012 版本 11.0.61219.00 更新 5 微软 .NET 框架版本 4.5.50938 ...并尝试使用/安装 natvis 来获取用户定义的调试器变量可视化。 我做了 MSDN 或 StackOverflow 中提供的所有提示(例如在注册表中创建 EnableNatvisDiagnostics,或在 https://msdn.microsoft.com/fr-fr/library/jj620914%28v=vs.110%29.aspx 中提供建议) 什么都行不通。 任何想法 ? 问候。 阿兰又名BDW 回答1 对我来说,我必须在调试器选项中关闭使用本机兼容模式。 在那之前,这些其他建议都没有奏效。 所以我的建议是试验这些调试器选项,直到 natvis 工作,因为这里没有一刀切的解决方案。 回答2 我在 VS2015 中遇到了类似的问题。 突然间,我所有的可视化工具都停止工作了。 参考这篇文章:Visual Studio 2012 中的用户定义的 natvis 文件 - 就我而言,“在变量窗口中显示数据对象的原始结构”已关闭。 检查它似乎让 VS 再次开始加载 Natvis 文件。 我还关闭了“使用托管兼容模式”和“使用本机兼容模式

2021-09-30 18:18:02    分类:技术分享    c++   visual-studio-2012   natvis

How to visualize a column order matrix with natvis like a 2d array

I have a struct struct Matrix2d { // Column first ordered elements vector<int> m_elements; int m_numRows; int m_numCols; }; m_elements stores {0, 1, 2, 3, 4, 5, 6, 7, 8} to represent the 2d matrix 0, 3, 6 1, 4, 7 2, 5, 8 I want to display this like below: Using ArrayItems feature in Natvis, I am able to come down with: Using natvis code: <Type Name="Matrix2d"> <Expand> <ArrayItems> <Direction>Backward</Direction> <Rank>2</Rank> <Size>$i==0?m_numRows:m_numCols</Size> <ValuePointer>&m_elements[0]</ValuePointer> </ArrayItems> </Expand> </Type> But this is really ugly and I'd rather have each row

2021-09-06 06:47:46    分类:问答    c++   natvis

customize multi-dimension array debugging in visual studio 2015 with .natvis file

I am using arma Matrix and I would like to have a look at the value during debugging. So I add a natvis file as followed: <?xml version="1.0" encoding="utf-8"?> <AutoVisualizer xmlns="http://schemas.microsoft.com/vstudio/debugger/natvis/2010"> <Type Name="arma::Mat<*>"> <DisplayString>{{ Size = {n_rows} x {n_cols} }}</DisplayString> <Expand> <Item Name="[size]">n_elem</Item> <ArrayItems> <Direction>Backward</Direction> <Rank>2</Rank> <Size> $i==0?n_rows:n_cols </Size> <ValuePointer>mem</ValuePointer> </ArrayItems> </Expand> </Type> </AutoVisualizer> However, it doesn't work at all. Sooner I

2021-08-30 18:13:20    分类:问答    c++   debugging   multidimensional-array   visual-studio-2015   natvis

Visual Studio 2012 中用户定义的 natvis 文件(User defined natvis files in Visual Studio 2012)

问题 我正在尝试在我的项目中使用新的调试可视化器,但是 Visual Studio 发生了一些事情,它不再获取我的 natvis 文件。 我尝试将它们复制到%USERPROFILE%\My Documents\Visual Studio 2012\Visualizers以及\Program Files (x86)\Microsoft Visual Studio 11.0\Common7\Packages\Debugger\Visualizers但它仍然失败。 一周前它确实有效,但从那时起就出现了问题。 我尝试修复 Visual Studio,但没有帮助。 我尝试在注册表中启用EnableNatvisDiagnostics ,但在Output window没有收到任何诊断消息。 不过,预装的 natvis 文件运行良好。 因此,我尝试从Program Files (x86)\Microsoft Visual Studio 11.0\Common7\Packages\Debugger\Visualizers删除预安装的 natvis 文件之一: stl.natvis但 Visual Studio 仍然显示vector ,就好像它可以访问stl.natvis文件。 有谁知道如何解决这个问题? Visual Studio 是否还有其他位置可以从中加载 natvis 文件?

2021-07-13 02:01:37    分类:技术分享    c++   visual-studio-2012   debuggervisualizer   natvis

How to visualise a simple std::string with natvis?

I can't have a decent view of a basic std:string in VS2015 while debugging. I followed the instructions given at this address :https://msdn.microsoft.com/fr-fr/library/jj620914.aspx (that is debugger type set to native mode, and uncheck both Use Managed Compatibility Mode and Use Native Compatibility Mode) . I have also added the stl.nativs file to my solution. Currently my debugger looks like : I would like to see as a value directly "test" for my variable str (instead of a very complex tree). Can you help me with this ?

2021-06-27 21:44:16    分类:问答    c++   debugging   visual-studio-2015   natvis

User defined natvis files in Visual Studio 2012

I'm trying to use new debug visualizers in my project, but something happened to Visual Studio and it does not pick up my natvis files anymore. I tried copying them to %USERPROFILE%\My Documents\Visual Studio 2012\Visualizers as well as to \Program Files (x86)\Microsoft Visual Studio 11.0\Common7\Packages\Debugger\Visualizers but it still fails. It did work a week ago, but something has broken since then. I tried repairing Visual Studio but it didn't help. I tried enabling EnableNatvisDiagnostics in the registry but I didn't get any diagnostic messages in the Output window. The preinstalled

2021-06-14 10:08:50    分类:问答    c++   visual-studio-2012   debuggervisualizer   natvis

我可以控制浮点和双变量在调试器窗口中显示的位数吗?(Can I control the number of digits displayed in debugger windows for float and double variables?)

问题 在 Visual Studio 2012 中,我正在寻找一种方法来自定义 Autos、Locals 和 Watch 窗口中浮点类型的默认显示。 我熟悉 Native Visualizer (Natvis) 实用程序,但没有看到任何调试器格式化工具来完成此操作。 同样,我不知道有什么方法可以覆盖任何原始类型的默认显示(除了启用十六进制)。 目标是创建具有较少数字扩展的显示字符串,用于对应于点、几何向量等的类型,但在扩展类型时仍然显示所有精度。 例如,在 Autos 窗口的中间列中,我可能有一个点类型的变量显示为(0.000, 1.234, 2.429)而不是m_x = 0.00000000, m_y = 1.234245213... 我查看了此页面上的格式说明符,但没有看到控制浮点精度的方法。 回答1 不幸的是,确实没有办法在 C++ 调试中进行这种细粒度的更改。 在托管语言中,这在某些有限的场景中是可能的(当原语是对象的字段并用特殊的[DebuggerDisplay]属性进行注释时)。 对于 C++,虽然这种类型的定制不存在。 回答2 尽管他们的文档似乎不支持它,但我们使用以下定义来缩短数字(在 VS 2015 中): <Type Name="MyVec3d"> <DisplayString>{vectorX,g}, {vectorY,g}, {vectorZ,g}<

2021-06-11 07:59:42    分类:技术分享    c++   debugging   visual-studio-2012   natvis

Visual Studio & Natvis not working

I'm using VS Ultimate 2012 Update 5 : Microsoft Visual Studio Ultimate 2012 Version 11.0.61219.00 Update 5 Microsoft .NET Framework Version 4.5.50938 ... and try to use/install natvis to get user defined debugger variable vizualisations. I did every hints provided in MSDN or StackOverflow (like creating EnableNatvisDiagnostics in registry, or advice in https://msdn.microsoft.com/fr-fr/library/jj620914%28v=vs.110%29.aspx) Nothing works. Any idea ? Regards. Alain aka BDW

2021-06-09 16:21:24    分类:问答    c++   visual-studio-2012   natvis