|
|
1.1 root 1:
2:
3: ptrace() COHERENT System Call ptrace()
4:
5:
6:
7:
8: Trace process execution
9:
10: #include <signal.h>
11: iinntt ppttrraaccee(_c_o_m_m_a_n_d, _p_i_d, _l_o_c_a_t_i_o_n, _v_a_l_u_e)
12: iinntt _c_o_m_m_a_n_d, _p_i_d, *_l_o_c_a_t_i_o_n, _v_a_l_u_e;
13:
14: ptrace provides a parent process with primitives to monitor and
15: alter the execution of a child process. These primitives typi-
16: cally are used by a debugger such as db, which needs to examine
17: and change memory, plant breakpoints, and single-step the child
18: process being debugged.
19:
20: Once a child process indicates it wishes to be traced, its parent
21: issues various commands to control the child. pid identifies the
22: affected process. The parent may issue a command only when the
23: child process is in a stopped state, which occurs when the child
24: encounters a signal. A special return value of 0177 from wait
25: informs the parent that the child has entered the stopped state.
26: The parent may then examine or change the child process memory
27: space or restart the process at any point.
28:
29: When the child process issues an exec, the child stops with sig-
30: nal SIGTRAP to enable the parent to plant breakpoints. The set
31: user id and set group id modes are ineffective when a traced
32: process performs an exec.
33:
34: The following list describes each available command. A command
35: ignores any arguments not mentioned.
36:
37: 00 This is the only command the child process may issue. It
38: tells the system that the child wishes to be traced. Parent
39: and child must agree that tracing should occur to achieve
40: the desired effect. Only the command argument is sig-
41: nificant.
42:
43: 11,22 The int at location is the return value. Command 1 sig-
44: nifies that location is in the instruction space, whereas
45: command 2 signifies data space. Often these two spaces are
46: equivalent.
47:
48: 33 The return value is the int of the process description, as
49: defined in sys/uproc.h. This call may be used to obtain
50: values such as hardware register contents and segment
51: allocation information.
52:
53: 44,55 Modify the child process's memory by changing the int at
54: location to value. Command 4 means instruction space and
55: command 5 means data space. Shared segments may be written
56: only if no other executing process is using them.
57:
58: 66 Modify the int at location in the process description area,
59: as with command 3. The permissible values for location are
60: restricted to such things as hardware registers and bits of
61: machine status registers that the user may safely change.
62:
63:
64: COHERENT Lexicon Page 1
65:
66:
67:
68:
69: ptrace() COHERENT System Call ptrace()
70:
71:
72:
73:
74: 77 This command restarts the stopped child process after it en-
75: counters a signal. The process resumes execution at loca-
76: tion, or from where the process was stopped if location is
77: (int *)1. value gives a signal number that the process
78: receives as it restarts. This is normally the number of the
79: signal that caused the process to stop, fetched from the
80: process description area by a 33 command. If value is zero,
81: the effect of the signal is ignored.
82:
83: 88 Force the child process to exit.
84:
85: 99 Like command 77, except that the child stops again with sig-
86: nal SIGTRAP as soon as practicable after the execution of at
87: least one instruction. The actual hardware method used to
88: implement this command varies from machine to machine, ex-
89: plaining the imprecise nature of its definition. This call
90: may provide part of the basis for breakpoints.
91:
92: ***** Files *****
93:
94: <signal.h>
95: <sys/uproc.h>
96:
97: ***** See Also *****
98:
99: db, COHERENT system calls, exec, signal(), wait()
100:
101: ***** Diagnostics *****
102:
103: ptrace returns -1 if pid is not the process id of an eligible
104: child process or if some other argument is invalid or out of
105: bounds. Some commands may return an arbitrary data value, in
106: which case errno should be checked to distinguish a return value
107: of -1 from an error return.
108:
109: ***** Notes *****
110:
111: There is no way to specify which signals should not stop the
112: process.
113:
114:
115:
116:
117:
118:
119:
120:
121:
122:
123:
124:
125:
126:
127:
128:
129:
130: COHERENT Lexicon Page 2
131:
132:
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.