nadilas / memviz

Visualize your Go data structures using graphviz

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

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 an easy to understand graph.

Simply pass in your data structure like so: memviz.Map(out, &data) and then pipe the output into graphviz.

For more complete examples see the tests in memviz_test.go.

Rendering with graphviz

Using the memviz output you can render the output directly as a png file (check out the implementation of at DataViz)

b := &bytes.Buffer{}
memviz.Map(foo, b)
dataviz_utils.WriteDotStringToPng(b.String(), "foo.png")

About

Visualize your Go data structures using graphviz

License:MIT License


Languages

Language:Go 98.4%Language:Makefile 1.6%