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 nsTimerImpl::Fire using the following line in the config file:
- Supports displaying arguments in the title using the config file. For example, displaying the observer service’s topic (plus putting it in its own band and giving it a nice prefix):
[class@nsObserverService] prefixAlias=Obs: band=context list_args=aTopic
- We actually get the dump() output by logging where _IO_fputs shows up. We constrain its output by adding an extensible (if currently somewhat specialized) argument-based constraint.
- Things in red are red because their return codes were exceptional, per my last blog post. Things in other colors are that way because of the config file.
- The bubbles that show up when you click on things tell you the return value and arguments for the call in question. We could include a backtrace, but they are expensive to compute (currently), so I don’t.
- All layout is using the timeline widget’s layout. There is no correspondence between stack depth and anything else.
An important limitation is that all functions displayed here were explicitly chosen for display. Some form of automated mechanism could be used, but unless chronicle-query starts caching more things, it would be really slow. Here’s the command-line used for the above:
chron-xpc mozrun-9022.db jsontrace -t 1 -f nsObserverService::NotifyObservers -f nsThread::ProcessNextEvent -f nsTimerImpl::Fire -f nsMsgSearchSession::NotifyListenersDone -f nsMsgDBFolder::Shutdown -f nsMsgLocalMailFolder::AddMessage -f nsMsgDatabase::Open -f nsMsgDatabase::ForceClosed -f nsMsgLocalMailFolder::GetDatabaseWithReparse -f nsMsgDBFolder::OnAnnouncerGoingAway -f nsMsgDBFolder::AddSubfolder -f nsMsgSearchOfflineMail::OpenSummaryFile -f nsMsgSearchSession::TimerCallback -f nsMsgSearchSession::TimeSlice -f nsMsgSearchSession::TimeSliceSerial -f nsMsgSearchScopeTerm::TimeSlice -f nsMsgXFVirtualFolderDBView::Open -f nsMsgXFVirtualFolderDBView::OnNewSearch -f nsMsgXFVirtualFolderDBView::OnSearchDone -f js_GC -f PrepareAndDispatch -f nsMsgLocalMailFolder::UpdateFolder -f _IO_fputs