Expo is a modular developer tool, currently capable of Tracking Events, Debug messages (with a small addition to your OnEnable code), and tracking evaluations in realtime. The entire framework of Expo is based on Violation, so Credits go to Rabbit(vhaarr) and Ag for the framework code. I know I couldn't have made anything as good as that myself.
Expo is generally intended only for AddOn Developers. There are no guarantees that Expo will not use lots of memory or CPU time, except when all modules are turned off.
Expo currently has the following modules:
The Event Tracker is capable of tracking Blizzard and Ace generated events. It has a maximum Number of Events to track, and this maximum can be customized. It can track any event, and can even use Lua Pattern matching to track related events. Each event is displayed with the time the event occurred and in order. If any addons are setup properly, their Debug messages will be listed in the event tracker rather than in the chat frames.
The Eval Tracker is used to track the results of Lua expressions. It only updates when other Modules update the display, so either use event tracker to define when the Evals should be updated, or use the Periodic Refresh module to update at specified intervals. The Eval tracker will correctly list syntax errors and execution errors in red, while results are listed with the type of the results.
Periodic Refresh is used to update the display at set intervals. This is useless for Event Tracker, but is important for the Eval Tracker, since it needs updates to show new evaluations.
I just uploaded revision 32933. This version includes the first version of the Profiler Module (Many thanks to CKKnight for letting me use his profiling code from PitBull for this).
The Profiler Module is capable of profiling any globally accessible function, and is capable of profiling an entire table of functions, and every table within. I plan to add better support for profiling Addons and classes in the future.
Though the profiler works for me, it is currently rather untested. Use at your own risk, and be prepared to do some Saved Variables file hacking if necessary. :)
Revision 33084 is now available, this version has fixed the bug causing Profilers to not be hooked up after the module is enabled, including after a login or reload. Also added in this version is the ability to clear all profiler data to zero.
My next goal for Expo is the ability to take a snapshot of profiler data, allowing a developer to easily determine what changes to efficiency new code has caused. I hope to have this implemented by tonight.