That is absolutely awesome. I used to have something like this: a pair of very fast dacs hooked up to the 16 address lines of my computer and another dac hooked up to the databus. It allowed me to look straight into the memory of the machine as the processor was accessing it, quite a powerful tool. Yours is nicer though (and with todays memory size I'd hate to think about the quantity of data that passes in a split second across the bus of a modern pc).
Here's one for Python. <a href="http://pythontutor.com/" rel="nofollow">http://pythontutor.com/</a> It shows the variables, and allows you to step forward and backward. Great for explaining programming to new people who haven't grokked computing yet.
Also, if anyone's interested, I need some help porting it to different platforms. If you can swim in the clusterfuck of x86 for a bit to port it to ward that would be awesome, or even getting working with gdb this could be an actual tool.
IIUC, you could probably use KLEE to ease the pain of capturing the state.<p><a href="http://klee.github.io/" rel="nofollow">http://klee.github.io/</a>
Shameless self-plug: Me and a friend developed a Java debugger [1] that visualizes (Java) programs with UML class and sequence diagrams [2]. It isn't actively developed anymore, but the demo version [3] (along with Help -> Tutorial) can still be used to give it a try.<p>It was quite an involved & fun project as we used Java VM Tool Interface directly instead of using JDI and the layout algorithms for the diagrams are quite fancy too :)<p>[1] <a href="http://www.jbixbe.com" rel="nofollow">http://www.jbixbe.com</a>
[2] <a href="http://www.jbixbe.com/VisualTour.html" rel="nofollow">http://www.jbixbe.com/VisualTour.html</a>
[3] <a href="http://www.jbixbe.com/download/jar/jbixbe.jar" rel="nofollow">http://www.jbixbe.com/download/jar/jbixbe.jar</a>
All right, I'll be the first one to admit that I don't know what the hell I'm looking at. Would some sort of explanation, or at the very least some source code, be too much to ask?
Its interesting that its dynamic. Idea to think about would be snapshotting dot files for graphviz. Then you can do all kinds of crazy stuff with the graphviz output.<p>My databases at work snapshot out their schemas to graphviz to create diagrams of all the FK relationships automatically every day, which I find helpful, and more or less inspired this idea.
I would love to have a visual representation of all the possible branches that can be taken in a body of C code, with an easy way to ask the program to tell me what are all the conditions that must be met for this branch to execute.