Newbie GDC issues

Ramon spam at thanks.no
Fri Sep 6 00:34:02 PDT 2013


On Friday, 6 September 2013 at 07:02:56 UTC, Iain Buclaw wrote:
>
> Dynamic arrays are just structs with a length and ptr field.  
> So when
> you invoke '.length' in the debugger you aren't calling a 
> method, you
> are just retrieving the type's field value.
>
> Currently, the only fancy thing the gdb does with D arrays is 
> that it
> pretty prints them. So take for example you have:
>
> { .length = 5, .ptr = "Hello" };
>
>
> Rather than printing the dynamic array like the above, it does a
> printf("%*.s") style operation to print the contents of .ptr, 
> but only
> as far as .length.  This is important because dynamic arrays 
> are not
> expected to be '0' terminated, and you can slice a dynamic 
> array into
> smaller arrays without copying data.
>
>
> Having the ability to slice D arrays using [] in gdb is 
> something on
> my todo list when I get round to improving gdb for D.

Thanks for the explanation, Iain.

But: Doesn't that mean that myArray[] is just syntactic sugar for 
myArray.ptr[i]? And if so wouldn't it make sense to fool gdb, 
too, to accept print myArray[4] instead of myArray.ptr[4]?

Funnily btw. "p myArray" prints out the whole array, yet asking 
it to print out myArray[3] fails as described.

Thanks also to HS for his hints

A+ -R


More information about the D.gnu mailing list