Blog post about printing associative arrays from GDB

Johannes Riecken johannes.riecken at gmail.com
Tue Nov 12 09:09:16 UTC 2019


I created an initial version and would be glad to get some 
feedback. I couldn't figure out how to call the _AAGetX-style 
functions, so I just went with the approach in my blog post to 
get something working that can be refactored later.

Here is the code. It currently works with gdc, but not with dmd, 
because dmd calls the type like _AArray_int_int, not int[int]. 
Also note that it creates (or overwrites) two files in the 
directory, libhelpers.so and helpers.d:

https://github.com/johannes-riecken-dunnhumby/pretty

I kept the generated files in there to ease experimentation 
(which I would take out later) and still it's very little code. 
To get it working I had to add the directory containing the code 
to my .gdbinit with `add-auto-load-safe-path ~/workspace/pretty`
gdb can auto-load python files related to an executable if they 
are named as <executable_name>-gdb.py, so I did that for my 
example executable foo (which i create with `gdc-9 -g -o foo 
foo.d`. To check if my code works I used the command

     PYTHONPATH=. gdb ./foo -ex 'b 3' -ex run -ex 'p dict'

For troubleshooting, check the output of `info pretty-printer` in 
gdb.
Support for custom structs should be easy enough to add, but I 
need to work now. Cheers!


More information about the Digitalmars-d-announce mailing list