Patrick Welche <prlw1@cam.ac.uk>
[netbsd-mini2440.git] / usr.bin / ktrace / ktrace.1
blob62899be667143b2f3310ee527f0022b8ed8abb5c
1 .\"     $NetBSD: ktrace.1,v 1.38 2007/03/02 20:45:45 wiz Exp $
2 .\"
3 .\" Copyright (c) 1990, 1993
4 .\"     The Regents of the University of California.  All rights reserved.
5 .\"
6 .\" Redistribution and use in source and binary forms, with or without
7 .\" modification, are permitted provided that the following conditions
8 .\" are met:
9 .\" 1. Redistributions of source code must retain the above copyright
10 .\"    notice, this list of conditions and the following disclaimer.
11 .\" 2. Redistributions in binary form must reproduce the above copyright
12 .\"    notice, this list of conditions and the following disclaimer in the
13 .\"    documentation and/or other materials provided with the distribution.
14 .\" 3. Neither the name of the University nor the names of its contributors
15 .\"    may be used to endorse or promote products derived from this software
16 .\"    without specific prior written permission.
17 .\"
18 .\" THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
19 .\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
20 .\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
21 .\" ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
22 .\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
23 .\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
24 .\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
25 .\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
26 .\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
27 .\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
28 .\" SUCH DAMAGE.
29 .\"
30 .\"     @(#)ktrace.1    8.1 (Berkeley) 6/6/93
31 .\"
32 .Dd August 27, 2007
33 .Dt KTRACE 1
34 .Os
35 .Sh NAME
36 .Nm ktrace , ktruss
37 .Nd enable kernel process tracing
38 .Sh SYNOPSIS
39 .Nm
40 .Op Fl aCcdins
41 .Op Fl f Ar trfile
42 .Op Fl g Ar pgrp
43 .Op Fl p Ar pid
44 .Op Fl t Ar trstr
45 .Nm
46 .Op Fl adis
47 .Op Fl f Ar trfile
48 .Op Fl t Ar trstr
49 .Ar command
50 .Nm ktruss
51 .Op Fl aCcdilnRT
52 .Op Fl e Ar emulation
53 .Op Fl f Ar infile
54 .Op Fl g Ar pgrp
55 .Op Fl m Ar maxdata
56 .Op Fl o Ar outfile
57 .Op Fl p Ar pid
58 .Op Fl t Ar trstr
59 .Nm ktruss
60 .Op Fl adinRT
61 .Op Fl e Ar emulation
62 .Op Fl m Ar maxdata
63 .Op Fl o Ar outfile
64 .Op Fl t Ar trstr
65 .Op Fl v Ar vers
66 command
67 .Sh DESCRIPTION
68 .Nm
69 enables kernel trace logging for the specified processes.
70 Kernel trace data is logged to the file
71 .Pa ktrace.out .
72 The kernel operations that are traced include system calls, namei
73 translations, signal processing, and
74 .Tn I/O .
75 .Pp
76 Once tracing is enabled on a process, trace data will be logged until
77 either the process exits or the trace point is cleared.
78 A traced process can generate enormous amounts of log data quickly;
79 It is strongly suggested that users memorize how to disable tracing before
80 attempting to trace a process.
81 The following command is sufficient to disable tracing on all user owned
82 processes, and, if executed by root, all processes:
83 .Pp
84 .Dl \&$ ktrace -C
85 .Pp
86 The trace file is not human readable; use
87 .Xr kdump 1
88 to decode it.
89 .Pp
90 .Nm ktruss
91 is functionally the same as
92 .Nm ktrace
93 except that trace output is printed
94 on standard output or to the file specified with the
95 .Fl o
96 option.
97 .Nm ktruss
98 is useful to see the kernel operations interleaved with
99 the program output.
101 The options are as follows:
102 .Bl -tag -width indent
103 .It Fl a
104 Append to the trace file instead of truncating it.
105 .It Fl C
106 Disable tracing on all user owned processes, and, if executed by root, all
107 processes in the system.
108 .It Fl c
109 Clear the trace points associated with the specified file or processes.
110 .It Fl d
111 Descendants; perform the operation for all current children of the
112 designated processes.
113 .It Fl f Ar trfile
114 Log trace records to
115 .Ar trfile
116 instead of
117 .Pa ktrace.out .
118 .It Fl f Ar infile
119 Read the trace records from
120 .Ar infile
121 and print them in a human readable format to standard out.
122 .It Fl g Ar pgid
123 Enable (disable) tracing on all processes in the process group (only one
124 .Fl g
125 flag is permitted).
126 .It Fl i
127 Inherit; pass the trace flags to all future children of the designated
128 processes.
129 .It Fl l
130 Poll the trace file for new data and print it to standard out.
131 Only for use together with the
132 .Fl f
133 option.
134 .It Fl m Ar maxdata
135 Print at most
136 .Ar maxdata
137 bytes of data.
138 This is used for pointer type arguments, e.g., strings.
139 The data will be escaped in C-style unless
140 .Fl x
141 is specified when it will be output in hex and ascii.
142 .It Fl n
143 Stop tracing if attempts to write to the trace file would block.
144 This option always affects
145 .Nm ktruss
146 and only affects
147 .Nm ktrace
148 when writing to
149 .Dv stdout .
150 If this flag is not set, then the traced program will block until it can
151 write more data to the trace file descriptor.
152 .It Fl o Ar outfile
153 Log trace records to
154 .Ar outfile .
155 Without this option
156 .Nm ktruss
157 will print its output in a human
158 readable format to standard out.
159 .It Fl p Ar pid
160 Enable (disable) tracing on the indicated process id (only one
161 .Fl p
162 flag is permitted).
163 .It Fl s
164 Write to the trace file with synchronized I/O.
165 .It Fl R
166 Display relative time stamps to output.
167 .It Fl T
168 Same as the
169 .Fl R
170 option, but use absolute timestamps instead.
171 .It Fl t Ar trstr
172 The string argument represents the kernel trace points, one per letter.
173 The following table equates the letters with the tracepoints:
175 .Bl -tag -width flag -compact
176 .It Cm A
177 trace all tracepoints
178 .It Cm a
179 trace exec arguments
180 .It Cm c
181 trace system calls
182 .It Cm e
183 trace emulation changes
184 .It Cm i
185 trace
186 .Tn I/O
187 .It Cm l
188 trace Mach out of line data when running Mach binaries with COMPAT_MACH
189 (currently limited to i386 and powerpc ports).
190 .It Cm m
191 trace Mach messages when running Mach binaries with COMPAT_MACH
192 (currently limited to i386 and powerpc ports).
193 .It Cm n
194 trace namei translations
195 .It Cm S
196 trace MIB access (sysctl)
197 .It Cm s
198 trace signal processing
199 .\" .It Cm U
200 .\" trace scheduler activations upcall data
201 .It Cm u
202 trace user data
203 .It Cm v
204 trace exec environment
205 .It Cm w
206 trace context switches
207 .It Cm +
208 trace the default set of trace points (c, e, i, l, m, n, s, u)
209 .It Cm -
210 do not trace following trace points
212 .It Fl e Ar emulation
213 If an emulation of a process is unknown,
214 interpret system call maps assuming the named emulation instead of
215 default "netbsd".
216 .It Ar command
217 Execute
218 .Ar command
219 with the specified trace flags.
220 .It Fl v Ar version
221 Determines the
222 .Ar version
223 of the file generated.
224 Version 0 is the compatible ktrace format, and
225 version 1 is the new format with lwp IDs and nanosecond (instead of
226 microsecond) timestamps.
230 .Fl p ,
231 .Fl g ,
233 .Ar command
234 options are mutually exclusive.
236 .Fl R
238 .Fl T
239 options are also mutually exclusive.
240 .Sh EXAMPLES
241 # trace all kernel operations of process id 34
242 .Dl $ ktrace -p 34
244 .Bd -literal
245 # trace all kernel operations of processes in process group 15 and
246 # pass the trace flags to all current and future children
248 .Dl $ ktrace -idg 15
250 # disable all tracing of process 65
251 .Dl $ ktrace -cp 65
253 # disable tracing signals on process 70 and all current children
254 .Dl $ ktrace -t s -cdp 70
256 # enable tracing of
257 .Tn I/O
258 on process 67
259 .Dl $ ktrace -ti -p 67
261 # run the command "w", tracing only system calls
262 .Dl $ ktrace -tc w
264 # disable all tracing to the file "tracedata"
265 .Dl $ ktrace -c -f tracedata
267 # disable tracing of all processes owned by the user
268 .Dl $ ktrace -C
270 # run the command "w", displaying to standard output
271 .Dl $ ktruss w
273 # trace process 42 and log the records to "ktruss.out"
274 .Dl $ ktruss -p 42 -o ktruss.out
276 # poll ktruss.out for available records and print them
277 .Dl $ ktruss -lf ktruss.out
278 .Sh SEE ALSO
279 .Xr kdump 1 ,
280 .Xr ktrace 2
281 .Sh HISTORY
284 command appears in
285 .Bx 4.4 .