[net.unix] A System Call Trace Facility

joes@sbcs.UUCP (Joseph Simonetti) (05/31/85)

	I have implemented an enhancement to the Berkeley 4.2 kernel
which allows one to log the system calls made by any process
or processes.  For each system call made by a traced process, 
the name of the system call, its arguments and the result
returned by the kernel to the user are recorded.
Arguments are formated in a manner consistent with the particular
system call.  For instance, the pathname passed to the open system
call is retrieved from user memory and recorded in the log as a
character string.  The log file is written as a plain text file
which is human-readable.

	I have found this tool to be very useful since it allows one
to figure out why some piece of system software does not function
without the need to dig through the source code, insert debugging
statements, recompile and re-install.  The trace is also valuable
when you want to explore the functioning of system software in
general since you can monitor such things as daemons without
interfering with their operation.

	Since it would not be reasonable to present a lengthy
discussion of the design issues and uses of the trace facility here,
interested persons may obtain the Technical Report by sending
mail to ...sbcs!kathy.  Ask for TR # 85/13 which is
entitled "A System Call Trace Facility".  Please include your
U. S. mail address.

	Anyone interested in obtaining source code for my
routines and the context diffs needed to modify the Berkeley
Kernel routines can send mail directly to me (...sbcs!joes).
The trace utility was implemented in March and has been running
without incident on one of our VAX 750's, so I have a
reasonable degree of confidence in the code.

	I would also be happy to entertain any comments
or suggestions you may have regarding this utility.

				Sincerely,

				Joseph D. Simonetti