19b50d902SRodney W. Grimes.\" Copyright (c) 1990, 1993 29b50d902SRodney W. Grimes.\" The Regents of the University of California. All rights reserved. 39b50d902SRodney W. Grimes.\" 49b50d902SRodney W. Grimes.\" Redistribution and use in source and binary forms, with or without 59b50d902SRodney W. Grimes.\" modification, are permitted provided that the following conditions 69b50d902SRodney W. Grimes.\" are met: 79b50d902SRodney W. Grimes.\" 1. Redistributions of source code must retain the above copyright 89b50d902SRodney W. Grimes.\" notice, this list of conditions and the following disclaimer. 99b50d902SRodney W. Grimes.\" 2. Redistributions in binary form must reproduce the above copyright 109b50d902SRodney W. Grimes.\" notice, this list of conditions and the following disclaimer in the 119b50d902SRodney W. Grimes.\" documentation and/or other materials provided with the distribution. 12fbbd9655SWarner Losh.\" 3. Neither the name of the University nor the names of its contributors 139b50d902SRodney W. Grimes.\" may be used to endorse or promote products derived from this software 149b50d902SRodney W. Grimes.\" without specific prior written permission. 159b50d902SRodney W. Grimes.\" 169b50d902SRodney W. Grimes.\" THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND 179b50d902SRodney W. Grimes.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 189b50d902SRodney W. Grimes.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 199b50d902SRodney W. Grimes.\" ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE 209b50d902SRodney W. Grimes.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 219b50d902SRodney W. Grimes.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 229b50d902SRodney W. Grimes.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 239b50d902SRodney W. Grimes.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 249b50d902SRodney W. Grimes.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 259b50d902SRodney W. Grimes.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 269b50d902SRodney W. Grimes.\" SUCH DAMAGE. 279b50d902SRodney W. Grimes.\" 28*a87651e2SEd Maste.Dd June 10, 2024 299b50d902SRodney W. Grimes.Dt KTRACE 1 3062500372SRuslan Ermilov.Os 319b50d902SRodney W. Grimes.Sh NAME 329b50d902SRodney W. Grimes.Nm ktrace 339b50d902SRodney W. Grimes.Nd enable kernel process tracing 349b50d902SRodney W. Grimes.Sh SYNOPSIS 358fe908efSRuslan Ermilov.Nm 369b50d902SRodney W. Grimes.Op Fl aCcdi 379b50d902SRodney W. Grimes.Op Fl f Ar trfile 3824b9685cSMike Heffner.Op Fl g Ar pgrp | Fl p Ar pid 39da647ae9SRuslan Ermilov.Op Fl t Ar trstr 408fe908efSRuslan Ermilov.Nm 419b50d902SRodney W. Grimes.Op Fl adi 429b50d902SRodney W. Grimes.Op Fl f Ar trfile 43da647ae9SRuslan Ermilov.Op Fl t Ar trstr 4433f69855SRuslan Ermilov.Ar command 459b50d902SRodney W. Grimes.Sh DESCRIPTION 4693e0d62dSJohn-Mark GurneyThe 4793e0d62dSJohn-Mark Gurney.Nm 48e8937ba0SPhilippe Charnierutility enables kernel trace logging for the specified processes. 499b50d902SRodney W. GrimesKernel trace data is logged to the file 509b50d902SRodney W. Grimes.Pa ktrace.out . 51*a87651e2SEd MasteThe kernel operations that are traced include system calls, 52*a87651e2SEd Maste.Xr namei 9 539b50d902SRodney W. Grimestranslations, signal processing, and 549b50d902SRodney W. Grimes.Tn I/O . 559b50d902SRodney W. Grimes.Pp 569b50d902SRodney W. GrimesOnce tracing is enabled on a process, trace data will be logged until 579b50d902SRodney W. Grimeseither the process exits or the trace point is cleared. 589b50d902SRodney W. GrimesA traced process can generate enormous amounts of log data quickly; 599b50d902SRodney W. GrimesIt is strongly suggested that users memorize how to disable tracing before 609b50d902SRodney W. Grimesattempting to trace a process. 61df449c35STom RhodesThe following command is sufficient to disable tracing on all user-owned 629b50d902SRodney W. Grimesprocesses, and, if executed by root, all processes: 639b50d902SRodney W. Grimes.Pp 6416964daeSPeter Wemm.Dl \&$ ktrace -C 659b50d902SRodney W. Grimes.Pp 669b50d902SRodney W. GrimesThe trace file is not human readable; use 679b50d902SRodney W. Grimes.Xr kdump 1 689b50d902SRodney W. Grimesto decode it. 699b50d902SRodney W. Grimes.Pp 70df449c35STom RhodesThe utility may be used only with a kernel that has been built with the 71df449c35STom Rhodes.Dq KTRACE 72df449c35STom Rhodesoption in the kernel configuration file. 73df449c35STom Rhodes.Pp 74df449c35STom RhodesThe options are: 759b50d902SRodney W. Grimes.Bl -tag -width indent 769b50d902SRodney W. Grimes.It Fl a 779bedbe6cSJoerg WunschAppend to the trace file instead of recreating it. 789b50d902SRodney W. Grimes.It Fl C 79df449c35STom RhodesDisable tracing on all user-owned processes, and, if executed by root, all 809b50d902SRodney W. Grimesprocesses in the system. 819b50d902SRodney W. Grimes.It Fl c 820b976534SJohn BaldwinClear the specified trace points associated with the given file or processes. 839b50d902SRodney W. Grimes.It Fl d 849b50d902SRodney W. GrimesDescendants; perform the operation for all current children of the 859b50d902SRodney W. Grimesdesignated processes. 866e5f5f90SEdward Tomasz NapieralaSee also the 876e5f5f90SEdward Tomasz Napierala.Fl i 886e5f5f90SEdward Tomasz Napieralaoption. 89943c2638SGiorgos Keramidas.It Fl f Ar trfile 909b50d902SRodney W. GrimesLog trace records to 91943c2638SGiorgos Keramidas.Ar trfile 929b50d902SRodney W. Grimesinstead of 939b50d902SRodney W. Grimes.Pa ktrace.out . 949b50d902SRodney W. Grimes.It Fl g Ar pgid 959b50d902SRodney W. GrimesEnable (disable) tracing on all processes in the process group (only one 969b50d902SRodney W. Grimes.Fl g 979b50d902SRodney W. Grimesflag is permitted). 989b50d902SRodney W. Grimes.It Fl i 999b50d902SRodney W. GrimesInherit; pass the trace flags to all future children of the designated 1009b50d902SRodney W. Grimesprocesses. 1016e5f5f90SEdward Tomasz NapieralaSee also the 1026e5f5f90SEdward Tomasz Napierala.Fl d 1036e5f5f90SEdward Tomasz Napieralaoption. 1049b50d902SRodney W. Grimes.It Fl p Ar pid 1059b50d902SRodney W. GrimesEnable (disable) tracing on the indicated process id (only one 1069b50d902SRodney W. Grimes.Fl p 1079b50d902SRodney W. Grimesflag is permitted). 108da647ae9SRuslan Ermilov.It Fl t Ar trstr 1090b976534SJohn BaldwinSpecify the list of trace points to enable or disable, one per letter. 1100b976534SJohn BaldwinIf an explicit list is not specified, the default set of trace points is used. 1110b976534SJohn Baldwin.Pp 1120b976534SJohn BaldwinThe following trace points are supported: 1139b50d902SRodney W. Grimes.Pp 1149b50d902SRodney W. Grimes.Bl -tag -width flag -compact 1159b50d902SRodney W. Grimes.It Cm c 1169b50d902SRodney W. Grimestrace system calls 11735818d2eSJohn Baldwin.It Cm f 11835818d2eSJohn Baldwintrace page faults 1199b50d902SRodney W. Grimes.It Cm i 1209b50d902SRodney W. Grimestrace 1219b50d902SRodney W. Grimes.Tn I/O 122d4523bd9SJohn Baldwin.It Cm n 123d4523bd9SJohn Baldwintrace namei translations 124c601ad8eSDag-Erling Smørgrav.It Cm p 125c601ad8eSDag-Erling Smørgravtrace capability check failures 1269b50d902SRodney W. Grimes.It Cm s 1279b50d902SRodney W. Grimestrace signal processing 12860e15db9SDag-Erling Smørgrav.It Cm t 12960e15db9SDag-Erling Smørgravtrace various structures 13009ac2438SPoul-Henning Kamp.It Cm u 13190a7bed4SEdward Tomasz Napieralauserland traces generated by 13290a7bed4SEdward Tomasz Napierala.Xr utrace 2 13309ac2438SPoul-Henning Kamp.It Cm w 13409ac2438SPoul-Henning Kampcontext switches 135a56be37eSJohn Baldwin.It Cm y 136a56be37eSJohn Baldwintrace 137a56be37eSJohn Baldwin.Xr sysctl 3 138a56be37eSJohn Baldwinrequests 139fef3edecSPeter Pentchev.It Cm + 140fef3edecSPeter Pentchevtrace the default set of trace points - 141f239db48SJake Freeland.Cm c , i , n , s , t , u , y 1429b50d902SRodney W. Grimes.El 1439b50d902SRodney W. Grimes.It Ar command 1449b50d902SRodney W. GrimesExecute 1459b50d902SRodney W. Grimes.Ar command 1469b50d902SRodney W. Grimeswith the specified trace flags. 1479b50d902SRodney W. Grimes.El 1489b50d902SRodney W. Grimes.Pp 1499b50d902SRodney W. GrimesThe 1509b50d902SRodney W. Grimes.Fl p , 1519b50d902SRodney W. Grimes.Fl g , 1529b50d902SRodney W. Grimesand 1539b50d902SRodney W. Grimes.Ar command 1549b50d902SRodney W. Grimesoptions are mutually exclusive. 1554f2ada0dSJake Freeland.Sh CAPABILITY VIOLATION TRACING 1564f2ada0dSJake FreelandWhen the 1574f2ada0dSJake Freeland.Cm p 1584f2ada0dSJake Freelandtrace point is specified, 1594f2ada0dSJake Freeland.Nm 1604f2ada0dSJake Freelandwill record 1614f2ada0dSJake Freeland.Xr capsicum 4 1624f2ada0dSJake Freelandcapability mode violations made by the traced process. 1634f2ada0dSJake FreelandViolations will be logged regardless of whether the process has actually 1644f2ada0dSJake Freelandentered capability mode. 1654f2ada0dSJake Freeland.Pp 1664f2ada0dSJake FreelandFor developers that are interested in Capsicumizing their programs, the 1674f2ada0dSJake Freeland.Cm c , n , p 1684f2ada0dSJake Freelandtrace points can help quickly identify any system calls and path lookups that 1694f2ada0dSJake Freelandare triggering violations. 1709b50d902SRodney W. Grimes.Sh EXAMPLES 1716e5f5f90SEdward Tomasz NapieralaRun "make", then trace it and any child processes: 1726e5f5f90SEdward Tomasz Napierala.Dl $ ktrace -i make 1736e5f5f90SEdward Tomasz Napierala.Pp 174c5ed2864SEdward Tomasz NapieralaTrace all kernel operations of process id 34: 1759b50d902SRodney W. Grimes.Dl $ ktrace -p 34 1769b50d902SRodney W. Grimes.Pp 177c5ed2864SEdward Tomasz NapieralaTrace all kernel operations of processes in process group 15 and 178c5ed2864SEdward Tomasz Napieralapass the trace flags to all current and future children: 1799b50d902SRodney W. Grimes.Dl $ ktrace -idg 15 1809b50d902SRodney W. Grimes.Pp 181c5ed2864SEdward Tomasz NapieralaDisable all tracing of process 65: 1829b50d902SRodney W. Grimes.Dl $ ktrace -cp 65 1839b50d902SRodney W. Grimes.Pp 184c5ed2864SEdward Tomasz NapieralaDisable tracing signals on process 70 and all current children: 1859b50d902SRodney W. Grimes.Dl $ ktrace -t s -cdp 70 1869b50d902SRodney W. Grimes.Pp 187c5ed2864SEdward Tomasz NapieralaEnable tracing of 1889b50d902SRodney W. Grimes.Tn I/O 189c5ed2864SEdward Tomasz Napieralaon process 67: 1909b50d902SRodney W. Grimes.Dl $ ktrace -ti -p 67 1919b50d902SRodney W. Grimes.Pp 192c5ed2864SEdward Tomasz NapieralaDisable all tracing to the file "tracedata": 1939b50d902SRodney W. Grimes.Dl $ ktrace -c -f tracedata 1949b50d902SRodney W. Grimes.Pp 195c5ed2864SEdward Tomasz NapieralaDisable tracing of all user-owned processes: 1969b50d902SRodney W. Grimes.Dl $ ktrace -C 1979b50d902SRodney W. Grimes.Sh SEE ALSO 1986e5f5f90SEdward Tomasz Napierala.Xr dtrace 1 , 199f4864c27SBrooks Davis.Xr kdump 1 , 2006e5f5f90SEdward Tomasz Napierala.Xr truss 1 , 20190a7bed4SEdward Tomasz Napierala.Xr ktrace 2 , 2024f2ada0dSJake Freeland.Xr utrace 2 , 203*a87651e2SEd Maste.Xr capsicum 4 , 204*a87651e2SEd Maste.Xr namei 9 2059b50d902SRodney W. Grimes.Sh HISTORY 2069b50d902SRodney W. GrimesThe 20793e0d62dSJohn-Mark Gurney.Nm 20893e0d62dSJohn-Mark Gurneycommand appeared in 2099b50d902SRodney W. Grimes.Bx 4.4 . 2106c7216dfSRuslan Ermilov.Sh BUGS 2116c7216dfSRuslan ErmilovOnly works if 2126c7216dfSRuslan Ermilov.Ar trfile 2136c7216dfSRuslan Ermilovis a regular file. 214