Python: 3D real-time debugging and function call structure

Here is two videos of a small script (python and xmlrpc calls to ubigraph visualization server) created to show a 3D graph of  the function call structure of a python application, the first shows only the structure created while running the application and the next video shows a debugging-like tool, it changes the node color to red when the function is called, and the labels shows: function name, python file name and the line on the python file where the code is.

Update (26/02): download here the script source-code.

To use the script, start the Ubigraph visualization server and add the profile module to your python application, it will looks like this:

import prof3d

def run_main():
   # your code

if __name__ == "__main__":
   prof3d.profile_me()
   run_main()

8 thoughts on “Python: 3D real-time debugging and function call structure

  1. not usable at all on django I left it running on the test server after 45 minutes it didn’t finished to startup while usually take a 2/3 seconds :(

  2. Hello, the code is a PoC, it can be optimized for speed, I’ve put the “time.sleep” on the code because you can’t see the running node when the execution is in a fast function call. Try removing the trace for C calls, this trace show all the builtins calls, which are note desirable some times. Btw, you can profile only some parts of the code, I think that this 3D debugging idea is more important and interesting for debugging algorithms rather than django startup. When using this approach to debug an algorithm, you can see structure of loops and function call patterns which are very hard to see when tracing on simple textual console.

  3. Hi Christian, do you have source code of UbiGraph? I wanna build it on Arch linux myself. Thanks.

Leave a Reply

Your email address will not be published.

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>