Truss like command under Linux to monitor and diagnostic the system calls
Q. Solaris and FreeBSD both provide the truss command to monitor and debug system calls. I'm unable to find this command or package. How can I install truss under Linux?
A. truss is a debugging utility in Solaris and FreeBSD to monitor the system calls used. It is used to trace call and useful debugging many problems. Linux provides strace command. This command is installed by default. strace is a useful diagnostic, instructional, and debugging tool. System administrators, diagnosticians and troubleshooters will find it invaluable for solving problems with programs for which the source is not readily available since they do not need to be recompiled in order to trace them.
strace for Linux, added many of the features of truss command from SVR4, and produced an strace that worked on both platforms.
strace examples
Run strace against /bin/bash and capture its output to a text file in /tmp/output.txt:
$ strace -o /tmp/output.txt /bin/bash
$ vi /tmp/output.txt
$ grep '^open' /tmp/output.txt
Output:
open("/etc/ld.so.cache", O_RDONLY) = 3
open("/lib/libncurses.so.5", O_RDONLY) = 3
open("/lib/tls/i686/cmov/libdl.so.2", O_RDONLY) = 3
open("/lib/tls/i686/cmov/libc.so.6", O_RDONLY) = 3
open("/dev/tty", O_RDWR|O_NONBLOCK|O_LARGEFILE) = 3
open("/usr/lib/locale/locale-archive", O_RDONLY|O_LARGEFILE) = -1 ENOENT (No such file or directory)
open("/usr/share/locale/locale.alias", O_RDONLY) = 3
open("/usr/lib/locale/en_IN/LC_IDENTIFICATION", O_R
.....
....
.....
open("/etc/inputrc", O_RDONLY|O_LARGEFILE) = 3
open("/proc/sys/kernel/ngroups_max", O_RDONLY) = 3
$ grep '^connect' /tmp/output.txt
connect(3, {sa_family=AF_FILE, path="/var/run/nscd/socket"}, 110) = -1 ENOENT (No such file or directory)
connect(3, {sa_family=AF_FILE, path="/var/run/nscd/socket"}, 110) = -1 ENOENT (No such file or directory)
To see only a trace of the open, close, read, and write system calls, enter:
$ strace -e trace=open,close,read,write df > output.txt
Another good option is ltrace - its use is very similar to strace command.
Refer strace man pages for all options:
man strace
man ltrace
Subscribe to our free e-mail newsletter or RSS feed to get all updates.
You can Email this page to a friend.
Related Linux / UNIX FAQ:
- FreeBSD Install Strace - A Process Tracer And Debugging Tool
- ORA-12154: TNS:could not resolve the connect identifier specified Error and Solution
- FreeBSD Mount /proc File System Command
- Enable Linux dual core CPU support for my Server
- Linux set date and time from command prompt
Leave a Reply
We encourage your comments, and suggestions. But please stay on topic, be polite, and avoid spam. Please do not use the comment form to ask for help / question. Ask your question on the excellent Linux tech support forum. Thank you very much for stopping by our site!
Tags: aix truss, diagnosticians, find out what files opend by binary, how to trace, hpux truss, kernel, Linux, linux open system call, linux truss, monitor system call, redhat truss, solaris truss, strace command, strace truss, svr4, system administrators, tool system, trace system call, truss command, UNIX, unix truss, unix truss command ~ Last updated on: April 10, 2008



Recent Comments
Yesterday ~ 3 Comments
Yesterday ~ 19 Comments
Yesterday ~ 2 Comments
Yesterday ~ 37 Comments
Yesterday ~ 46 Comments