|
|
1.1 root 1: .TH MONITOR 3 "19 January 1983"
2: .UC 4
3: .SH NAME
4: monitor, monstartup, moncontrol \- prepare execution profile
5: .SH SYNOPSIS
6: .nf
7: .B monitor(lowpc, highpc, buffer, bufsize, nfunc)
8: .B int (*lowpc)(), (*highpc)();
9: .B short buffer[];
10: .sp
11: .B monstartup(lowpc, highpc)
12: .B int (*lowpc)(), (*highpc)();
13: .sp
14: .B moncontrol(mode)
15: .fi
16: .SH DESCRIPTION
17: There are two different forms of monitoring available:
18: An executable program created by:
19: .IP " cc \-p . . ."
20: .LP
21: automatically includes calls for the
22: .IR prof (1)
23: monitor and includes an initial call to its start-up routine
24: .I monstartup
25: with default parameters;
26: .I monitor
27: need not be called explicitly except to gain fine control over profil
28: buffer allocation.
29: An executable program created by:
30: .IP " cc \-pg . . ."
31: .LP
32: automatically includes calls for the
33: .IR gprof (1)
34: monitor.
35: .PP
36: .I Monstartup
37: is a high level interface to
38: .IR profil (2).
39: .I Lowpc
40: and
41: .I highpc
42: specify the address range that is to be sampled; the lowest address sampled
43: is that of
44: .I lowpc
45: and the highest is just below
46: .IR highpc .
47: .I Monstartup
48: allocates space using
49: .IR sbrk (2)
50: and passes it to
51: .I monitor
52: (see below) to record a histogram of periodically sampled values of
53: the program counter, and of counts of calls of certain functions, in the buffer.
54: Only calls of functions compiled with the profiling option
55: .B \-p
56: of
57: .IR cc (1)
58: are recorded.
59: .PP
60: To profile the entire program, it is sufficient to use
61: .PP
62: .nf
63: extern etext();
64: . . .
65: monstartup((int) 2, etext);
66: .fi
67: .PP
68: .I Etext
69: lies just above all the program text, see
70: .IR end (3).
71: .PP
72: To stop execution monitoring and write the results on the file
73: .I mon.out,
74: use
75: .PP
76: monitor(0);
77: .LP
78: then
79: .IR prof (1)
80: can be used to examine the results.
81: .PP
82: .I Moncontrol
83: is used to selectively control profiling within a program.
84: This works with either
85: .IR prof (1)
86: or
87: .IR gprof (1)
88: type profiling.
89: When the program starts, profiling begins.
90: To stop the collection of histogram ticks and call counts use
91: .IR moncontrol (0);
92: to resume the collection of histogram ticks and call counts use
93: .IR moncontrol (1).
94: This allows the cost of particular operations to be measured.
95: Note that an output file will be produced upon program exit
96: irregardless of the state of
97: .I moncontrol.
98: .PP
99: .I Monitor
100: is a low level interface to
101: .IR profil (2).
102: .I Lowpc
103: and
104: .I highpc
105: are the addresses of two functions;
106: .I buffer
107: is the address of a (user supplied) array of
108: .I bufsize
109: short integers. At most
110: .I nfunc
111: call counts can be kept.
112: For the results to be significant, especially where there are small, heavily
113: used routines, it is suggested that the buffer be no more
114: than a few times smaller than the range of locations sampled.
115: .I Monitor
116: divides the buffer into space to record the histogram
117: of program counter samples over the range
118: .I lowpc
119: to
120: .IR highpc ,
121: and space to record call counts of functions compiled with the
122: .B \-p
123: option to
124: .IR cc (1).
125: .PP
126: To profile the entire program, it is sufficient to use
127: .PP
128: .nf
129: extern etext();
130: . . .
131: monitor((int) 2, etext, buf, bufsize, nfunc);
132: .fi
133: .SH FILES
134: mon.out
135: .SH "SEE ALSO"
136: cc(1), prof(1), gprof(1), profil(2), sbrk(2)
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.