我正在尝试修改 autoexp.dat 来编写可视化工具,但我只部分实现了我想要的目标。我有一个类(如下),其中 Bar1 和 Bar2 是动态分配的数组
class Foo
{
double* Bar1;
double* Bar2;
int size;
}
我想出的 autoexp.dat 的 [Visualizer] 部分中的可视化工具看起来像
Foo{
children
(
#(
[size]: [$c.size],
#(
[Bar1]: #array(expr: $c.Bar1[$i], size: $c.size)
),
#(
[Bar2]: #array(expr: $c.Bar2[$i], size: $c.size)
)
)
)
}
不幸的是,其输出是
Foo
[size] 24
[Bar1] 1
[Bar1] 1
.
.
[Bar1] 1
[Bar2] 0
[Bar2] 0
.
.
[Bar2] 0
我希望它显示
Foo
[size] 24
[Bar1]
[0] 1
[1] 1
.
.
[23] 1
[Bar2]
[0] 0
[1] 0
.
.
[23] 0
其中 Bar1 和 Bar2 是可折叠的,但更重要的是我有索引。
最佳答案
扩展@IronMensan的建议,您可以使用 switch 语句来绕过动态大小限制,也许使用合适的长度作为默认值以避免 switch 变得太长...
Foo{
children(
#(
#([size]: [$c.size]),
#(
#switch ($c.size)
#case 0 ( #(Bar1: [$c.Bar1, 0]) )
#case 1 ( #(Bar1: [$c.Bar1, 1]) )
#case 2 ( #(Bar1: [$c.Bar1, 2]) )
#case 3 ( #(Bar1: [$c.Bar1, 3]) )
#case 4 ( #(Bar1: [$c.Bar1, 4]) )
#case 5 ( #(Bar1: [$c.Bar1, 5]) )
#default ( #(Bar1: [$c.Bar1, 50]) )
),
#(
#switch ($c.size)
#case 0 ( #(Bar2: [$c.Bar2, 0]) )
#case 1 ( #(Bar2: [$c.Bar2, 1]) )
#case 2 ( #(Bar2: [$c.Bar2, 2]) )
#case 3 ( #(Bar2: [$c.Bar2, 3]) )
#case 4 ( #(Bar2: [$c.Bar2, 4]) )
#case 5 ( #(Bar2: [$c.Bar2, 5]) )
#default ( #(Bar2: [$c.Bar2, 50]) )
)
)
)
}
关于c++ - 使用具有两个动态数组的 Visual Studio 调试器可视化工具提供帮助,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6588110/