UNIX in a Nutshell: System V Edition

UNIX in a Nutshell: System V EditionSearch this book
Previous: Reference: trueChapter 2
Unix Commands
Next: Reference: tset
 

truss

truss [options] arguments

Trace system calls, signals, and machine faults while executing arguments. arguments is either a Unix command to run or, if -p is specified, a list of process IDs representing the already running processes to trace. The options -m, -r, -s, -t, -v, -w, and -x accept a comma-separated list of arguments. A ! reverses the sense of the list, telling truss to ignore those elements of the list during the trace. (In the C shell, use a backslash before !.) The keyword all can include/exclude all possible elements for the list. The optional ! and corresponding description are shown in brackets.

The Solaris truss also provides tracing of user-level function calls in dynamically loaded shared libraries.

This command is particularly useful for finding missing files when a third-party application fails. By watching the access and open system calls, you can find where, and which, files the application program expected to find, but did not.

Many systems have similar programs named trace or strace. These programs are worth learning how to use.

Options

-a

Display parameters passed by each exec(2) call.

-c

Count the traced items and print a summary rather than listing them as they happen.

-d

Print a timestamp in the output, of the form seconds.fraction, indicating the time relative to the start of the trace. Times are when the system call completes, not starts. Solaris only.

-D

Print a delta timestamp in the output, of the form seconds.fraction, indicating the time between events (i.e., the time not inside system calls). Solaris only.

-e

Display values of environment variables passed by each exec(2) call.

-f

Follow child processes. Useful for tracing shell scripts.

-i

List sleeping system calls only once, upon completion.

-m[!]faults

Trace [exclude from trace] the list of machine faults. faults are names or numbers, as listed in <sys/fault.h> (default is -mall -m!fltpage).

-M[!]faults

When the traced process receives one of the named faults, truss leaves the process in a stopped state and detaches from it (default is -M!all). The process can subsequently be attached to with a debugger, or with another invocation of truss using different options. Solaris only.

-l

Show the lightweight process ID for a multithreaded process. Solaris only.

-o outfile

Send trace output to outfile, not standard error.

-p

Trace one or more running processes instead of a command.

-r[!]file_descriptors

Display [don't display] the full I/O buffer of read system calls for file_descriptors (default is -r!all).

-s[!]signals

Trace [exclude from trace] the list of signals. signals are names or numbers, as listed in <sys/signal.h> (default is -sall).

-S[!]signals

When the traced process receives one of the named signals, truss leaves the process in a stopped state and detaches from it (see -M) (default is -S!all). Solaris only.

-t[!]system_calls

Trace [exclude from trace] the list of system_calls. system_calls are names or numbers, as listed in Section 2, "System Calls," of the UNIX Programmer's Reference Manual (see Bibliography); default is -tall.

-T[!]system_calls

When the traced process executes one of the named system calls, truss leaves the process in a stopped state and detaches from it (see -M) (default is -T!all). Solaris only.

-u[!]lib,...:[:][!]func,...

Trace user-level function calls, not just system calls. lib is a comma-separated list of dynamic library names, without the .so.n suffix. func is a comma-separated list of names. Shell wildcard syntax may be used to specify many names. (Such use should be quoted to protect it from expansion by the shell.) The leading ! indicates libraries and/or functions to exclude. With :, only calls into the library from outside it are traced; with ::, all calls are traced. Solaris only.

-U[!]lib,...:[:][!]func,...

When the traced process executes one of the named user-level functions, truss leaves the process in a stopped state and detaches from it (see -M). Solaris only.

-v[!]system_calls

Verbose mode. Same as -t, but also list the contents of any structures passed to system_calls (default is -v!all).

-w[!]file_descriptors

Display [don't display] the full I/O buffer of write system calls for file_descriptors (default is -w!all).

-x[!]system_calls

Same as -t, but display the system call arguments as raw code (hexadecimal) (default is -x!all).

Examples

Trace system calls access, open, and close for the lp command:

truss -t access,open,close lp files > truss.out

Trace the make command, including its child processes, and store the output in make.trace:

truss -f -o make.trace make target


Previous: Reference: trueUNIX in a Nutshell: System V EditionNext: Reference: tset
Reference: trueBook IndexReference: tset

The UNIX CD Bookshelf NavigationThe UNIX CD BookshelfUNIX Power ToolsUNIX in a NutshellLearning the vi Editorsed & awkLearning the Korn ShellLearning the UNIX Operating System