Awesome
memviz
How would you rather debug a data structure?
<table> <tr> <td>"Pretty" printed</td> <td>Visual graph</td> </tr> <tr> <td> <pre> (*test.fib)(0xc04204a5a0)({ index: (int) 5, prev: (*test.fib)(0xc04204a580)({ index: (int) 4, prev: (*test.fib)(0xc04204a560)({ index: (int) 3, prev: (*test.fib)(0xc04204a540)({ index: (int) 2, prev: (*test.fib)(0xc04204a520)({ index: (int) 1, prev: (*test.fib)(0xc04204a500)({ index: (int) 0, prev: (*test.fib)(<nil>), prevprev: (*test.fib)(<nil>) }), prevprev: (*test.fib)(<nil>) }), prevprev: (*test.fib)(0xc04204a500)({ index: (int) 0, prev: (*test.fib)(<nil>), prevprev: (*test.fib)(<nil>) }) }), . . .</pre> </td> <td width="60%"><image src=".github/fib.svg"></td> </tr> </table>Usage
memviz
takes a pointer to an arbitrary data structure and generates output that can be used to generate an easy to
understand diagram using graphviz.
To generate a diagram, first you will need to install graphviz on your system following the instructions here.
Next, use memviz.Map(out, &data)
to generate a graphviz dot file and
then pipe the output into graphviz.
For examples of how to use memviz
, see the code sample in the example
folder and the tests in memviz_test.go.