Ptrace stellt einen Weg zur Verfügung, durch den ein Vaterprozeß die Ausführung
eines Tochterprozesses kontrollieren und sein core überwachen und
ändern kann. Der Hauptnutzen besteht in der Implementation von
Fehlersuche mit Unterbrechungspunkten (breakpoint debugging). Ein
getraceter Prozeß läuft bis ein Signal auftritt. Dann
stoppt er und der Vater wird benachrichtigt durch
wait(2) [Englisch].
Wenn des Prozeß sich in gestopptem Zustand befindet, kann sein Speicher
gelesen und beschrieben werden. Der Vater kann auch die Tochter bewegen,
die Ausführung fortzusetzen; optional kann das Signal, daß das Stoppen
bewirkte, ignoriert werden.
Der Wert des Arguments
request legt die genaue Aktion des Systemaufrufs
fest:
PTRACE_TRACEME
|
|
Dieser Prozeß wird durch seinen Vater verfolgt. Der Vater sollte erwarten
die Tochter zu verfolgen.
|
PTRACE_PEEKTEXT, PTRACE_PEEKDATA
|
|
Lese Wort bei Adresse
addr. |
PTRACE_PEEKUSR
|
|
Lese Wort bei Adresse
addr im
USER-Bereich. |
PTRACE_POKETEXT, PTRACE_POKEDATA
|
|
Schreibe Wort an Adresse
addr. |
PTRACE_POKEUSR
|
|
Schreibe Wort an Adresse
addr im
USER-Bereich. |
PTRACE_SYSCALL, PTRACE_CONT
|
|
Fahre fort nach Signal.
|
PTRACE_KILL
|
|
Send dem Tochterprozeß ein
SIGKILL um ihn zu beenden.
|
PTRACE_SINGLESTEP
|
|
Setze das trap Flag für Einzelschrittmodus.
|
PTRACE_ATTACH
|
|
Haenge an den Prozeß an, der durch
pid spezifiziert ist.
|
PTRACE_DETACH
|
|
Gib einen Prozeß frei, der vorher verbunden war.
|