strace for Mac OS X

In Leopard it’s called dtrace, but it’s simpler if you just call dtruss

Here is the manual:

NAME
dtruss – process syscall details. Uses DTrace.
-
SYNOPSIS
dtruss [-acdeflhoLs] [-t syscall] { -p PID | -n name | command }
-
DESCRIPTION
dtruss prints details on process system calls. It is like a DTrace ver-
sion of truss, and has been designed to be less intrusive than truss.
Of particular interest is the elapsed times and on cpu times, which can
identify  both  system calls that are slow to complete, and those which
are consuming CPU cycles.
Since  this  uses  DTrace,  only  the  root  user  or  users  with  the
dtrace_kernel privilege can run this command.
-
OPTIONS
-a     print all details
-b bufsize
dynamic  variable  buffer  size.  Increase  this  if  you notice
dynamic  variable  drop  errors.  The  default  is  ”4m”  for  4
megabytes per CPU.
-c     print system call counts
-d     print relative timestamps, us
-e     print elapsed times, us
-f     follow children as they are forked
-l     force printing of pid/lwpid per line
-L     don’t print pid/lwpid per line
-n name
examine processes with this name
-o     print on-cpu times, us
-s     print stack backtraces
-p PID examine this PID
-t syscall
examine this syscall only
-
EXAMPLES
run and examine the “df -h” command
# dtruss df -h
examine PID 1871
# dtruss -p 1871
examine all processes called “tar”
# dtruss -n tar
run test.sh and follow children
# dtruss -f test.sh
run the “date” command and print elapsed and on cpu times,
# dtruss -eo date
-
FIELDS
PID/LWPID
Process ID / Lightweight Process ID
RELATIVE
relative  timestamps  to  the start of the thread, us (microsec-
onds)
ELAPSD elapsed time for this system call, us
CPU    on-cpu time for this system call, us
SYSCALL(args)
system call name, with arguments (some may be evaluated)
-
DOCUMENTATION
See the DTraceToolkit for further documentation under the  Docs  direc-
tory. The DTraceToolkit docs may include full worked examples with ver-
bose descriptions explaining the output.
-
EXIT
dtruss will run forever until Ctrl-C is hit, or if a command  was  exe-
cuted dtruss will finish when the command ends.
-
AUTHOR
Brendan Gregg [Sydney, Australia]
-
SEE ALSO
procsystime(1M), dtrace(1M), truss(1)

Category: Bash Shell Comment »


Leave a Reply



Spam protection by WP Captcha-Free

Back to top