用natvis解构结构数组

时间:2016-11-10 09:36:20

标签: debugging visual-studio-2015 natvis

我正在寻找一种方法,在visual studio 2015中使用natvis在单独的数组中显示结构数组的条目。

显示此

+-x[0]
  +-a
  +-b
  +-c
+-x[1]
  +-a
  +-b
  +-c
...

作为

a
+-[0]    (= x[0].a)
+-[1]    (= x[1].a)
...
b
+-[0]    (= x[0].b)
+-[1]    (= x[1].b)
...
c
+-[0]    (= x[0].c)
+-[1]    (= x[1].c)

1 个答案:

答案 0 :(得分:0)

编辑:在评论之后,这是一个有效的解决方案,但它需要对齐您的代理类型,在我的情况下,只能使用二次幂值来完成。

#define A(t) __declspec(align(t))

struct C
{
    int a;
    int b;
    int c;
    int junk;
};

A(16) struct D
{
    int z;
};

A(16) struct DB {
    int junk;
    int z;
};

A(16) struct DC {
    int junk[2];
    int z;
};

typedef union
{
    D da;
    DB db;
    DC dc;
} Ui;

typedef union
{
    C c[50];
    Ui d[50];
} U;

原创(不完整)答案:

每种类型都经过单独解析和可视化。因此,在解析每个x元素时,无法存储该数据以用于以后聚合a,b和c。

但是,您可以更改代码,使重叠(联合)类型与您的数组完全匹配。然后为每种类型编写单独的可视化工具:

__decltypestruct C { int a,b,c; };
struct D { int a[10], b[10], c[10]; };
union {
C c[10];
D d;
};