I'm working on something similar, with similar motivation. I often need application-specific diagnostics and I haven't had a framework for building them. So I decided to make one.
I'm approaching LuaJIT diagnostics in a really similar way to you. I instrument the VM to snapshot key data structures (e.g. JIT code) and log them to a file. Then I make a UI that visualizes them as a graph. My snapshots are raw C data structures straight out of memory with only a subset of references crawled. The UI decodes the objects the same way as GDB i.e. using DWARF debug information.
Anyway. Maybe our paths will cross further down the line. Looks to me like your work is more targeted, more polished, and that you are likely to find an excellent niche e.g. Redis as another commenter suggested. I am more interested in breadth i.e. object graphs are just one of many problems I am interested in and so I'm always looking for 80/20 solutions so that I can move on to the next thing.
End braindump. Once again - great work, and great presentation! Open an issue on the Studio repo if you want to share your work there some time btw :)
Hey Luke, that's very cool—first thing I've come across that seems to value visualizing that same kinds of things I think are important.
You are correct that for the moment I am attempting to be more targeted and find a good niche. My first priority is to generate some passive income so I can relax a little and work on things at a reasonable pace. From there, I have some more grand ideas for this project, though I will probably remain focused on abstractions of program state. I'm curious to see what other useful things you find to visualize—I liked the execution time/trace trees. I could definitely use that.
Thanks for the comment—feel free to shoot me an e-mail if you ever feel inclined: westoncb[at Google's email service].
I'm working on something similar, with similar motivation. I often need application-specific diagnostics and I haven't had a framework for building them. So I decided to make one.
I'm approaching LuaJIT diagnostics in a really similar way to you. I instrument the VM to snapshot key data structures (e.g. JIT code) and log them to a file. Then I make a UI that visualizes them as a graph. My snapshots are raw C data structures straight out of memory with only a subset of references crawled. The UI decodes the objects the same way as GDB i.e. using DWARF debug information.
LuaJIT example: https://github.com/raptorjit/raptorjit/pull/63#issuecomment-...
My main project for the tooling (early days): https://github.com/studio/studio
Anyway. Maybe our paths will cross further down the line. Looks to me like your work is more targeted, more polished, and that you are likely to find an excellent niche e.g. Redis as another commenter suggested. I am more interested in breadth i.e. object graphs are just one of many problems I am interested in and so I'm always looking for 80/20 solutions so that I can move on to the next thing.
End braindump. Once again - great work, and great presentation! Open an issue on the Studio repo if you want to share your work there some time btw :)