Trace the system calls and signals for command with optional arguments. strace shows you how data is passed between the program and the kernel. With no options, strace prints a line for each system call. It shows the call name, given arguments, return value, and any generated error messages. A signal is printed with both its signal symbol and a descriptive string. As it shows the data transfer between user and kernel-space, strace is very useful as both a diagnostic utility for system administrators and a debugging tool for programmers. By default, the output is written to standard error.
Align the return values in column n. The default is 40.
Count system calls, errors, signals, and time and provide a summary report when the program has ended.
Debug mode. Print debugging information for strace on stderr.
-e [keyword=] [!] values
Pass an expression to strace to limit the types of calls or signals that are traced or to change how they are displayed. If no keyword is given, trace is assumed. The values can be given as a comma-separated list. Preceding the list with an exclamation point (!) negates the list. The special valuesall and none are valid, as are the values listed with the following keywords.
Abbreviate output from large structures for system calls listed in names.
Print all data read from the given file descriptors.
Trace the listed signal symbols (for example, signal=SIGIO,SIGHUP).
sets may be a list of system call names or one of the following:
Calls that take a filename as an argument.
Print arguments for the given system calls in hexadecimal.
Unabbreviate structures for the given system calls. Default is none.
Print all data written to the given file descriptors.
Trace forked processes.
Write system calls for forked processes to separate files named filename.pid when using the -o option.
Print help and exit.
Print the current instruction pointer with each system call.
Write output to filename instead of stderr. If filename starts with the pipe symbol |, treat the rest of the name as a command to which output should be piped.
Override strace's built-in timing estimates, and just subtract n microseconds from the timing of each system call to adjust for the time it takes to measure the call.
Attach to the given process ID and begin tracking. strace can track more than one process if more than one option -p is given. Type Ctrl-C to end the trace.
Quiet mode. Suppress attach and detach messages from strace.
Relative timestamp. Print time in microseconds between system calls.
Print only the first n characters of a string. Default value is 32.
Sort output of -c option by the given value. value may be calls, name, time, or nothing. Default is time.
Print time spent in each system call.
Print time of day on each line of output.
Print time of day with microseconds on each line of output.
Print timestamp on each line as the number of seconds and microseconds since the Epoch.
Run command as username. Needed when tracing setuid and setgid programs.