Natvis, CV8, dAssocArray

Void-995 void995 at gmail.com
Wed Sep 26 07:45:49 UTC 2018


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.


More information about the Digitalmars-d-debugger mailing list