我目前正在尝试为工作中的大型项目创建一个 natvis XML 文件。我们有一个指向类型的指针,调试器对此一无所知(使用 typedef 隐藏信息,作者的想法很愚蠢,但目前无法更改......)。
原来的结构和这个类似(调试器对这些类型一无所知,他只看到指针):
struct INNER_1_t
{
int* pointerToArray;
int n;
}
struct INNER_2_t
{
int v_1;
int v_2;
}
struct OUTER_t
{
/* a lot of other, primitive members ... */
int lface;
int *edges; //Array with num_edges members
int num_edges;
INNER_1_t *ptr1; //Array with n1 members
int n1;
INNER_2_t *ptr2; //Array with n2 items
int n2;
}
我的目标是通过 natvis XML 文件使该结构的成员可见。对于普通成员来说,这很容易,使用 Items 和指针算法。例子:
<Item Name="lface">*((int*)(((char*)this)+92))</Item>
我也知道如何定义已知类型的数组:
<Synthetic Name="edge">
<DisplayString>Edges({*((int*)(((char*)this)+80))})</DisplayString>
<Expand>
<ArrayItems>
<Size>*((int*)(((char*)this)+80))</Size>
<ValuePointer>*((double**)(((char*)this)+76))</ValuePointer>
</ArrayItems>
</Expand>
</Synthetic>
有没有办法定义一个(对于调试器)未知类型的数组?或者我可以以某种方式声明 XML 文件中的类型吗?