/* * @(#)README 1.4 91/09/06 * * Copyright (C) 1991 Paul Kranenburg. * * Please send comments, enhancements or any other useful ideas to * the address at the end of this file. * */ strace(1) is a system call tracer for Sun(tm) systems much like the Sun supplied program trace(1). strace(1) is a useful utility to sort of debug programs for which no source is available which unfortunately includes almost all of the Sun supplied system software. Like trace(1), strace displays each system call and its arguments as it is invoked by the traced process, but tries to do a better job of decoding the arguments, displaying them in symbolic format whenever possible. Passed structures/character arrays are read from the process' address space and displayed in an appropriate format. It is also possible to instruct strace to trace child processes as they are created by the fork(2) system call. However, this is slightly involved for two reasons: 1) the trace flag is cleared in the child process by the fork system call, so we must make a special effort to gain control of the child (see NOTES below), 2) our tracing manipulations of the child may interfere with a possible wait(2) system call executed by the (also traced) parent process. In this case we don't allow the parent to continue until one of its children enters a state that may cause the parent's wait(2) call to return. NOTES. o Not all system calls have been implemented yet as described above (see dummy.h for a list), these calls only have their args displayed as hex numbers. o The program draws heavily on Sun's extensions to the ptrace(2) system call. o This release is based upon SunOS 4.1.1. The syscall list (syscall.h) and ioctl's (ioctlent.h) are probably most critically dependant on the OS version (see also /sys/os/init_sysent.c). o The way in which child processes are caught and attached to after the fork() call is Sparc-specific (in fact it has the looks of a terrible hack). Also, this trick won't work with vfork(2). Enhancements are sollicited for. INSTALLATION. Edit the paths in the Makefile to suit your local system. Enter the usual make commands (`make debug' to enable the compiler `-g' flag). COMMENTS TO: P. Kranenburg Department of Computer Science Erasmus University Rotterdam P.O. Box 1738 NL-3000 DR Rotterdam e-mail: pk@cs.few.eur.nl