Mondo (Monitor of Dynamic Objects)

MONDO supplies programmers with a graphical interface to view library dependencies, observe symbol bindings, and uncover subtle programming errors related to the use of shared libraries. MONDO requires no modification to existing code or the dynamic linker and can be used with any application that uses shared libraries.

Data Collection

Most runtime linkers support some sort of debugging output. While it is intended to be human readable, there is usually way more output than any human can actually process. Consider the output from the ld.so.1 on solaris.

[host]~/env LD_DEBUG=bindings ls
--snip--
24186: binding file=ls to file=/usr/lib/libc.so.1: symbol `.rem'
24186: binding file=/usr/lib/libc.so.1 to file=/usr/lib/libc.so.1: symbol `_xflsbuf'
24186: binding file=/usr/lib/libc.so.1 to file=/usr/lib/libc.so.1: symbol `_write'
Links-Donour.ps    cvs                hw6.ps             man                src
Mail               debug              info               nsmail
bin                donour-et-all.tar  ld.stat            opt
cs331              hw2.ps             lib                share
24186: binding file=ls to file=/usr/lib/libc.so.1: symbol `exit'
24186: binding file=/usr/lib/libc.so.1 to file=/usr/lib/libc.so.1: symbol `_exithandle'
--snip--

Even the simplest program will generate hundreds of lines of output like this to the console. Larger programs, such as web broswers, generate tens of thousands of lines. Mondo extracts meaningful information from this data.

Documentation

Preliminary documentation. Yes, we know its sparse. For the most part, MONDO is very easy to use once you understand what it does. So far this has been one of those cases where describing the problem is difficult but the solution is simple.

Authors

Requirements

Supported Platforms

Screenshots and Examples

Downloads

Releases and the cvs tree are available at the sourceforge project page: www.sf.net/projects/mondo-ep
SourceForge.net Logo donour@cs.uchicago.edu (9/5/03)