Natvis, CV8, dAssocArray
Rainer Schuetze
r.sagitario at gmx.de
Wed Sep 26 18:06:48 UTC 2018
On 26/09/2018 09:45, Void-995 wrote:
> On Wednesday, 26 September 2018 at 07:37:26 UTC, Rainer Schuetze wrote:
>>
>>
>> On 25/09/2018 22:08, Void-995 wrote:
>>> I almost finished my -gc for Natvis experiment (to use MS C++
>>> Debugger from VS Code, fully translating type names from what comes
>>> from DMD frontend to valid C++ type name so Natvis works), but then I
>>> encountered dAssocArray, which has form of: void* as CodeView
>>> structure member, KeyType __key_t and ValueType __val_t as nested types.
>>>
>>> As for someone who just found about CodeView today: what is nested
>>> type, what is the deal with void*, what to do with __key_t and
>>> __val_t to get values.
>>
>> Nested types are types declared in another type, e.g. in C++
>>
>> struct dAssocArray
>> {
>> typedef int __key_t;
>> typedef long __val_t;
>> void* ptr;
>> };
>>
>> The AA data structures are not exposed by the compiler, but the mago
>> debugger rebuilds them from these types.
>
> Makes sense. I've tried to move them to "member" but they obviously did
> not point anywhere, which is logical if that is just "typedef". Is there
> any way to expose real key/values from backend or get them via some
> Natvis magic? That's basically only thing that stops from using MS C/C++
> plug-in for debugging from VS Code. Natvis support may be valuable for
> Linux and Mac as well, as they've added minimal support for Natvis to
> GDB and LLDB via their plug-in.
Not sure if you can define new structs in NatVis, but the void pointer
points to rt.aaA.Impl which contains an array of Buckets, and their
entry member points to a std::pair<__key_t,__val_t>.
More information about the Digitalmars-d-debugger
mailing list