Ever find yourself stuck debugging an application because the UI is just doing something weird that you can’t track down? Maybe a widget isn’t appearing correctly, or you just need more information about the overall structure and logging statements aren’t doing you much good. Debugging complex UIs can be a pain.
We’ve had some real challenges at VMware, due to the complexity of our applications. It was enough to drive me mad one day, so rather than write more logging statements, I wrote Parasite.
Parasite is a debugging tool that David Trowbridge and I have been working on to give developers an interactive view of their entire application’s UI. It provides a number of really useful features, including:
- See the entire widget hierarchy of your UI.
- Watch properties update live.
- Modify existing properties on a widget.
- View all registered GtkActions.
- Toggle GTK+’s debugging of graphic updates.
- Inject custom code while the application is running.
Yes, you can inject new code into an application. With Python. Parasite runs in-process as a GTK+ module, so it has access to some internals of your application. We provide a Python shell equipped with PyGTK support for creating and modifying your UI on-the-fly, regardless of the language it was written in. Handy when you want to test out new concepts for a UI without writing new C code.
David has a nice screencast available showing some of what Parasite can do.
For more information on Parasite, including screenshots, a mailing list, and where to get the source code, see the Parasite homepage.