#include <sys/signal.h> #include <sys/ptrace.h>
int ptrace (
long int process,
ulong_t data );
Determines the action to be taken by the ptrace function. Specifies the process ID. Determined by the value of the request parameter. Determined by the value of the request parameter.
The ptrace function permits a parent process to control execution of a child process. It is primarily used by utility programs to enable breakpoint debugging.
The child process behaves normally until it receives a signal. When a signal is delivered, the child process is stopped, and a SIGCHLD signal is sent to its parent. The parent process can wait for the child process to stop using the wait function.
When the child process is stopped, its parent process can use the ptrace function to examine and modify the image memory of the child process, to either terminate the child process or permit it to continue.
As a security measure, the ptrace function inhibits the set-user ID facility when any subsequent exec function is issued by the child process. When a traced process calls one of the exec functions, it stops before executing the first instruction of the new image as if it had received the SIGTRAP signal.
The request parameter is set to one of the values in the following list. Only the PT_TRACE_ME request can be issued by child processes; the remaining requests can only be used by the parent process. For each request, the process parameter is the process ID of the child process. The child process must be in a stopped state before the following requests are made. This request sets the child process trace flag. It must be issued by the child process that is to be traced by its parent process. When the trace flag is set, the child process is left in a stopped state on receipt of a signal, and the action specified by the sigaction function is ignored. The process, address, and data parameters are ignored, and the return value is not defined for this request. Do not issue this request when the parent process does not expect to trace the child process. These requests return the address space data of the child process at the location pointed to by the address parameter. The PT_READ_I and PT_READ_D requests produce equal results. The data parameter is ignored. These requests fail when the value of the address parameter is not in the address space of the child process or, on some machines, when the address parameter is not properly aligned. These errors return a value of -1, and the parent process errno is set to [EIO]. This request returns the variable of the system's per-process data area for the child, specified by the address parameter. This area contains the register values and other information about the process. On some machines, the address parameter is subject to alignment constraints. The data parameter is ignored. This request fails when the value of the address parameter is outside of the system's per-process data area for the child. On failure, a value of -1 is returned and the parent process errno is set to [EIO]. These requests write the value of the data parameter into the address space variable of the child process at the location pointed to by the address parameter. On some machines, where necessary, the PT_WRITE_I request synchronizes any hardware caches, if present. In all other respects, the PT_WRITE_I and PT_WRITE_D requests can be used with equal results. On some machines, these requests return the previous contents of the address space variable of the child process, while on other machines no useful value is returned with the exception of System V behavior. System V behavior for libsys5 returns the value written, and for libc behavior it returns zero (0) for success.
If the ptrace function fails, errno is set to one of the following values: Specifies that the request parameter does not have one of the listed values, or is not valid for the machine type on which the process is executing. Specifies that the given signal number is invalid. Specifies that the addressed used is either out of bounds or improperly aligned. Specifies that the process parameter identifies a child process that does not exist or that has not executed this function with the request parameter PT_TRACE_ME. Specifies that the specified process cannot be traced. Specifies that an invalid location was used for the system's per-process data area or that the process parameter is out of range. Specifies that the location within the system's per-process data area could not be modified.
Functions: exec(2), sigaction(2), wait(2). delim off