manpage for each, and try running each on a couple of different a.out's—the "hello world" program,
and a big program.
Go through these carefully—investing 15 minutes now in trying each one will save you hours later in
solving a hard bug.
Table 6-1. Tools to Examine Source
Tool Where to
Find ItWhat It Doescb Comes with
the compilerC program beautifier. Run your source through this filter to put it in a
standard layout and indentation. Comes from Berkeley.indent Does the same things cb does. Comes from AT & T.
cdecl This book Unscrambles C declarations.
cflow Comes with
the compilerPrints the caller/callee relationships of a program.cscope Comes with
the compilerAn interactive ASCII-based C program browser. We use it in the OS
group to check the impact of changes to header files. It provides quick
answers to questions like: "How many commands use libthread?" or "Who
are all the kmem readers?"ctags /usr/bin Creates a tags file for use in vi editor. A tags file speeds up examining
program source by maintaining a table of where most objects are located.lint Comes with
the compilerA C program checker.sccs /usr/ccs/bin A source code version control system.
vgrind /usr/bin A formatter for printing nice C listings.
Doctors can use x-rays, sonograms, arthroscopes, and exploratory operations to look inside their
patients. These tools are the x-rays of the software world.
Table 6-2. Tools to Examine Executables
Tool Where to
Find ItWhat It Doesdis /usr/ccs/bin Object code disassembler
dump -
Lv
/usr/ccs/bin Prints dynamic linking informationldd /usr/bin Prints the dynamic libraries this file needs
nm /usr/ccs/bin Prints the symbol table of an object file
strings /usr/bin Looks at the strings embedded in a binary. Useful for looking at the error
messages a binary can generate, built-in file names, and (sometimes)
symbol names or version and copyright information.sum /usr/bin Prints checksum and block count for a file. An-swers questions like: "Are
two executables the same version?" "Did the transmission go OK?"Table 6-3. Tools to Help with Debugging