在Visual Studio 2015监视窗口中,可以通过添加逗号和数组长度来将指针作为数组监视。 d,10将显示10个双* d元素。
是否可以创建一个Natvis类型条目,该条目基于间接次数(即)执行此操作。对于d,d *和d **以不同的方式? 通常这些甚至是某种类型的成员,例如struct s {double * d},但我想避免不得不为所有这些类型编写自定义可视化工具。
该问题已标记为VS2015,但欢迎使用vs2017或vs2019解决方案。
答案 0 :(得分:1)
对不起,但是看来您无法轻松实现想要的目标。
将<Type Name="double*">
或<Type Name="double**">
添加到Natvis Visual Studio时会抱怨
Natvis:NatvisFile.natvis(xx,x):错误:原始类型'double **'不允许
因此,无需更改代码,您将需要为所有相关结构添加natvis。
但是在查看您的代码库时,我想将您指向CppCoreGuidelines,尤其是这些规则:
如果您的代码库将遵循这些规则,而不会进行数组到指针的衰减,则完整类型信息将在调试器中提供。
另一种方法可能是将double
封装为强类型。请比较this blog post与Fluent {C ++}。但是,如果您没有要求double*
或double**
的旧版API,这可能很容易起作用。
答案 1 :(得分:0)
在示例中您注意到,您有一个 $('.add-extra-email-button').click(function() {
var newDiv = $('<div class="clone_edilen_email"></div>');
newDiv.html('<div class="form-group"><input type="email" class="form-control email-address" name="email[]" placeholder="E-Mail"></div>');
$('.clone').append(newDiv);
});
结构,因此可以为此类型创建S
:
natvis
但是,正如@Werner Henze已经回答的那样,您无法为<?xml version="1.0" encoding="utf-8"?>
<AutoVisualizer xmlns="http://schemas.microsoft.com/vstudio/debugger/natvis/2010">
<Type Name="S">
<Expand>
<Item Name="v3">v3, [3]nag</Item>
<CustomListItems>
<Variable Name="i" InitialValue="0"/>
<Loop>
<Item Name="m3[{i}]">m3[i],[3]nag</Item>
<Exec>++i</Exec>
<If Condition="i>=3">
<Break/>
</If>
</Loop>
</CustomListItems>
</Expand>
</Type>
</AutoVisualizer>
创建natvis