Skip to content

{ Category Archives } Debugging

work-in-progress tooling: feeding GWT SpeedTracer systemtapped mozilla performance data

Now that Thunderbird 3.1 is string/feature-frozen it’s time to focus on performance.  This post is just to make sure that people who are also working on similar things know what I’m up to.  For example, there’s some very exciting work going on involving adding a startup timeline to mozilla-central that everyone keeping up-to-date with mozilla [...]

Tagged , ,

performance annotated SQLite EXPLAINation visualizations using systemtap

For the Thunderbird 3.1 release cycle we are not just fixing UX problems but also resolving various performance issues.  The key to defeating performance problems, like the key to defeating bad guys in movies, is to make sure they are dead.  If you want to fight the bad guy again, you can just assume that [...]

Tagged , , , ,

Using systemtap to figure what your mozilla app’s event loop is up to

==================== ms # —– Event Loop: nsTimerEvent 1233 31 nsProxyObjectCallInfo 19 44 nsStreamCopierOB 1 48 nsStreamCopierIB 0 18 nsProxyCallCompletedEvent 0 44 nsProxyReleaseEvent 0 27 nsTransportStatusEvent 0 19 nsSocketEvent 0 18 nsHttpConnectionMgr::nsConnEvent 0 1 —– Timers: OnBiffTimer(…) 1129 3 nsGlobalWindow::TimerCallback(…) 70 10 nsAutoSyncManager::TimerCallback(…) 29 6 nsExpirationTracker::TimerCallback(…) 1 1 nsIdleService::IdleTimerCallback(…) 0 5 nsExpirationTracker::TimerCallback(…) 0 1 nsHttpHandler 0 [...]

Tagged ,

prototype unified JavaScript/C++ back-traces for Mozilla in (archer) gdb

As far as I know (and ignoring my previous efforts on chroniquery along these lines), up until now you had your C/C++ Mozilla backtraces via gdb (chocolate) and your JS backtraces via “call DumpJSStack()” or the debugger keyword from within JS (peanut butter), but these two great flavors had never come together to make a [...]

Tagged , ,

Using VMWare Record/Replay and VProbes for low time-distortion performance profiling

The greatest problem with performance profiling is getting as much information as possible while affecting the results as little as possible.  For my work on pecobro I used mozilla’s JavaScript DTrace probes.  Because the probes are limited to notifications of all function invocations/returns with no discretion and there is no support for JS backtraces, the [...]

Tagged , , , , , , , ,

Better error reporting for the mozilla platform

If you develop for the mozilla platform, you might be used to error messages like the above.  (Or you might wish you got error messages like the above…)  An uncaught javascript exception has resulted in a message in the error console as well as some equivalent stdout spew because it’s a debug build.  While any [...]

Tagged ,

displaying execution traces on a SIMILE timeline

chroniquery can now output JSON for display using the SIMILE timeline widget.  And I am finally done trying to figure out what was going wrong.  Click the pictures to experience the timeline sensation for yourself. Related interesting things: Supports a fancy if specific constraint mechanism.  For example, PrepareAndDispatch is only displayed in the context of [...]

Tagged , ,

understanding where unit tests go wrong with object diffs

In our last chroniquery adventure, we used roc‘s chronicle-recorder to trace the execution of an xpcshell unit test and chroniquery (repo info) to use that trace to help us understand what was happening in some particularly confusing C-ish code.  Actually, we’re doing that this time too, but the bag of tricks now contains additional tricks. [...]

Tagged ,

gaudily syntax-highlighted code listings in (archer) gdb

Gaudily syntax-highlighted code listing in gdb joins the gaudy gdb plugin family!  (Other members include gaudily colorized backtraces, which you can also see in the bottom of the screenshot.)  This, of course, requires gdb with python crammed inside.  It might require one crammed a few months ago too; I haven’t updated my archer-gdb repo for [...]

Tagged , , , ,

understanding libmime using chroniquery and unit tests

Mailnews’ libmime is one of the harder modules to wrap one’s head around.  8-letter filenames where the first four letters tend to be “mime”, home-grown glib-style OO rather than actual C++, and intermingling of display logic with parsing logic do not make for a fun development or even comprehension experience. Running an xpcshell unit test [...]

Tagged , ,