2016-11-10 5 views
0

Я ищу способ отображения записей массива структур в отдельных массивах с natvis в визуальной студии 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) 
+0

Не могли бы вы поделиться снимком экрана о окне часов по умолчанию для массива в вашей стороне? Означает ли это, что вы хотите отображать одно значение позиции стрелки один за другим на одном уровне? Поскольку все значение по умолчанию, которое по умолчанию используется дочерним элементом под одним родительским элементом. –

ответ

0

Редактировать: После комментария, это рабочее решение, но оно требует выравнивания ваших типов прокси, который в моем с ase может быть сделано только с помощью значений мощности двух.

#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; 

Original (неполный) Ответ:

Каждый тип индивидуально обрабатывается и визуализируется. Поэтому при анализе каждого элемента 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; 
}; 
+0

спасибо за ответ, но я думаю, что это не будут те же данные в союзе. d.a [3] будет c [1] .c. – heitho

+0

Вы правы. Попробуйте новое решение. – liorda