COHERENT manpages
This page displays the COHERENT manpage for ptrace() [Trace process execution].
List of available manpages
Index
ptrace() -- System Call (libc)
Trace process execution
#include <signal.h>
int ptrace(command, pid, location, value)
int command, pid, *location, value;
ptrace() provides a parent process with primitives to monitor and alter the
execution of a child process. These primitives typically are used by a
debugger such as db, which needs to examine and change memory, plant
breakpoints, and single-step the child process being debugged.
Once a child process indicates it wishes to be traced, its parent issues
various commands to control the child. pid identifies the affected
process. The parent may issue a command only when the child process is in
a stopped state, which occurs when the child encounters a signal. A
special return value of 0177 from wait() informs the parent that the child
has entered the stopped state. The parent may then examine or change the
child process memory space or restart the process at any point.
When the child process issues an exec(), the child stops with signal
SIGTRAP to enable the parent to plant breakpoints. The set user id and set
group id modes are ineffective when a traced process performs an exec().
The following list describes each available command. A command ignores any
arguments not mentioned.
0 This is the only command the child process may issue. It tells the
system that the child wishes to be traced. Parent and child must
agree that tracing should occur to achieve the desired effect. Only
the command argument is significant.
1,2 The int at location is the return value. Command 1 signifies that
location is in the instruction space, whereas command 2 signifies data
space. Often these two spaces are equivalent.
3 The return value is the int of the process description, as defined in
sys/uproc.h. This call may be used to obtain values such as hardware
register contents and segment allocation information.
4,5 Modify the child process's memory by changing the int at location to
value. Command 4 means instruction space and command 5 means data
space. Shared segments may be written only if no other executing
process is using them.
6 Modify the int at location in the process description area, as with
command 3. The permissible values for location are restricted to such
things as hardware registers and bits of machine status registers that
the user may safely change.
7 This command restarts the stopped child process after it encounters a
signal. The process resumes execution at location, or from where the
process was stopped if location is (int *)1. value gives a signal
number that the process receives as it restarts. This is normally the
number of the signal that caused the process to stop, fetched from the
process description area by a 3 command. If value is zero, the effect
of the signal is ignored.
8 Force the child process to exit.
9 Like command 7, except that the child stops again with signal SIGTRAP
as soon as practicable after the execution of at least one
instruction. The actual hardware method used to implement this
command varies from machine to machine, explaining the imprecise
nature of its definition. This call may provide part of the basis for
breakpoints.
Files
<signal.h>
<sys/uproc.h>
See Also
db,
exec,
libc,
ptrace.h,
signal(),
wait()
Diagnostics
ptrace() returns -1 if pid is not the process id of an eligible child
process or if some other argument is invalid or out of bounds. Some
commands may return an arbitrary data value, in which case errno should be
checked to distinguish a return value of -1 from an error return.
Notes
There is no way to specify which signals should not stop the process.









