Skip to content

Visualize your Go data structures using graphviz

License

Notifications You must be signed in to change notification settings

bradleyjkemp/memviz

Folders and files

NameName
Last commit message
Last commit date
Jan 30, 2018
May 14, 2019
Nov 7, 2020
Nov 18, 2017
May 15, 2019
Nov 17, 2017
May 15, 2019
Nov 7, 2020
Dec 13, 2018
Dec 13, 2018
Dec 19, 2019
Jan 19, 2019
Nov 7, 2020
Nov 7, 2020
Dec 19, 2019
May 15, 2019

Repository files navigation

memviz Build Status Coverage Status Go Report Card GoDoc

How would you rather debug a data structure?

"Pretty" printed Visual graph
(*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)(),
      prevprev: (*test.fib)()
     }),
     prevprev: (*test.fib)()
    }),
    prevprev: (*test.fib)(0xc04204a500)({
     index: (int) 0,
     prev: (*test.fib)(),
     prevprev: (*test.fib)()
    })
   }),
   .
   .
   .

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.