86 lines
3.3 KiB
Plaintext
86 lines
3.3 KiB
Plaintext
|
========================================================================
|
||
|
This is the unmodified README from Paul Kranenburg's release of strace
|
||
|
for SunOS 4.1.x. Some of the notes and instructions are no longer valid
|
||
|
however the file has been retained for its historical value. -- jrs
|
||
|
========================================================================
|
||
|
|
||
|
/*
|
||
|
* @(#)README 2.4 92/01/21
|
||
|
*
|
||
|
* 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.m4) are probably most critically dependant
|
||
|
on the OS version (see also /sys/os/init_sysent.c).
|
||
|
You may have to edit `ioctlsort.c' and/or `ioctlent.m4' to get
|
||
|
`ioctlsort.c' to compile with your suite of system header files.
|
||
|
|
||
|
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.
|
||
|
|
||
|
o Dynamically linked executables can be convinced to use the fork(2)
|
||
|
system call in stead of vfork(2) by modifying their (internal)
|
||
|
symbol table immediately after such a program is exec'ed. Be
|
||
|
warned that programs which depend on vfork's peculiar semantics
|
||
|
may not run as expected. Enable by the `-F' switch.
|
||
|
|
||
|
|
||
|
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).
|
||
|
|
||
|
Not all sites have a complete set of include files, depending
|
||
|
on the selected software categories at OS install time. The
|
||
|
makefile tries to detect the presence of the Sunview category,
|
||
|
if other files are missing you may have to edit `ioctlent.h'.
|
||
|
|
||
|
|
||
|
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
|