BSD 4_4_Lite1 development
[unix-history] / usr / src / contrib / mprof / README
CommitLineData
f9693f56
C
1
2MPROF -- memory profiler (version 3.0)
3
4To use mprof, you must link the library libc_mp.a (found in the mprof
5directory) into your application (this library is the C library with
6the definitions of malloc and free replaced). Profiling starts
7automatically when malloc is first called. Profile data is written to
8the file "mprof.data". There are several functions that users can
9call to change the name of the output file, etc. See the man page in
10mprof.man.
11
12Simply by linking in the new malloc and executing your application, a
13file called ``mprof.data'' will be created in the current directory.
14This is the data file that mprof uses to build its dynamic call graph.
15To look at the output of mprof, first edit the script `mprof' in the
16mprof directory. Replace the mproot variable with the correct
17pathname of the mprof directory (the directory in which this
18``README'' file is located). Then place the mprof directory in your
19search path, and call mprof in your application directory with the
20following arguments:
21
22mprof [ options ] [ executable-file (a.out) ] [ data-file (mprof.data) ]
23
24The output contains four tables, the fields of which are described in
25the man page in mprof.man. Further documentation is available in a
26paper which describes the implementation of mprof (published in the
271988 summer USENIX conference) . The LaTeX source of that paper is
28located in mprof.tex. The printable DVI file is located in mprof.dvi.
29
30There are currently four makefiles, for the VAX, Sun-3, Sun-4, and
31MIPS (specifically, the Decstation 3100). To remake mprof, copy the
32appropriate file to `Makefile'. If you need to recompile mprof for
33any reason, type ``make all'' in this directory. To remove .o files,
34type ``make clean'' in this directory. mprof has been tested on VAX
35(4.3 BSD and Ultrix using gcc and cc), SUN-3 (gcc and cc), Sun-4 (cc)
36computers, and Decstation 3100 (gcc and cc). To test if mprof works
37in simple cases, type `make test'.
38
39Mprof does not use Kyoto Common Lisp anymore. To use mprof, all you
40need is a C compiler.
41
42The current incarnation of mprof does not handle calls to Sun calls to
43valloc or memalign correctly. The calls will be profiled, but if your
44program calls valloc or memalign and tries to later free that memory,
45mprof will cause it to core dump. On the VAX, memory allocated by
46valloc cannot be freed, and so valloc can be profiled correctly on the
47VAX. A version of malloc.c is provided with mprof. If this version
48is not compatible with the version used on your machine, you may need
49to replace this file. If you have problems like this, please let me
50know so I can keep a record of the bugs encountered.
51
52My thanks to Stuart Sechrest, Fred Douglis, Dain Samples, John
53Ousterhout, Luigi Semenzato, Richard Tuck, Robert Scheifler, Mark
54Eichin, Pat Stephenson, and Steven Sargent for their interest and
55comments.
56
57My special thanks to Jeffrey Hsu who did the tricky port of mprof to
58the MIPS architecture.
59
60In the future (although the exact date is uncertain) I plan to make
61the following improvements to mprof:
62
631. Add code to detect duplicate frees.
642. Fix up the type determination code in mpfilt (see BUGS section in
65 the man page for mprof).
66
67If you have any questions or comments, please feel free to contact me.
68
69-Ben Zorn
70 e-mail: zorn@boulder.colorado.edu
71 phone: 303-492-4398
72
73
74Differences between version 2.0 and 2.1:
75
761. In mpfilt.c, the variable stab_i was being incremented without
77checking for an overflow. Overflow checks were added.
78
792. A user discovered that a value of 5000 for ST_SIZE in mpfilt.c was
80too small. Large programs may require a larger value for ST_SIZE.
81
82
83Differences between version 2.1 and 2.2:
84
851. mprof now runs on the Decstation 3100 (a MIPS machine).
86
872. A bug that prevented mprof from working in version 4.0 of the Sun
88operating system was fixed.
89
90
91Difference between version 2.2 and 3.0:
92
931. All analysis is now done in C.
94
952. The file mprof.c was renamed mprof_mon.c and the file mpfilt.c was
96renamed mprof.c.
97
983. The old C-shell script ``mprof'' is not needed anymore. The file
99analysis.lsp is also not needed. It's functionality is now provided
100in the file mpgraph.c.
101
1024. Small bugs previously reported were fixed.