PTRACE(2)

NOM
ptrace - Suivre un processus.

SYNOPSIS
#include <sys/ptrace.h>

int ptrace(int request, int pid, int addr, int data);

DESCRIPTION
Ptrace fournit au processus parent un moyen de controler l'execution d'un enfant, et d'editer son image memoire. L'utilisation primordiale de cette fonction est l'implementation de points d'arret pour le debugging. Un processus suivi se deroule jusqu'a l'arrivee d'un signal. Ensuite il s'interrompt et son parent sera averti grace a la fonction wait(2). Quand le processus se trouve arrete (stop), sa memoire peut etre lue et ecrite. Le parent peut egalement faire continuer l'execution de son fils, avec une option pour ignorer le signal ayant declenche l'arret.

La valeur de l'argument request indique precisement l'action a entreprendre.

PTRACE_TRACEME
    Le processus en cours va etre suivi par son pere. Le parent doit etre en attente de suivi du fils.

PTRACE_PEEKTEXT, PTRACE_PEEKDATA
    Lire un mot a l'adresse addr.

PTRACE_PEEKUSR
    Lire un mot a l'adresse addr dans l'espace USER.

PTRACE_POKETEXT, PTRACE_POKEDATA
    Ecrire un mot a l'adresse addr.

PTRACE_POKEUSR
    Ecrire un mot a l'adresse addr dans l'espace USER.

PTRACE_SYSCALL, PTRACE_CONT
    Redemarrer apres un signal

PTRACE_KILL
    Envoyer au fils un signal SIGKILL pour le terminer.

PTRACE_SINGLESTEP
    Positionner un drapeau d'execution pas-a-pas.

PTRACE_ATTACH
    Attacher le processus numero pid.

PTRACE_DETACH
    Detacher un processus precedemment attache.

NOTES
init, le processus numero 1, ne peut pas utiliser cette fonction.

VALEUR RENVOYEE
ptrace renvoie 0 s'il reussit, ou -1 s'il echoue, auquel cas errno contient le code d'erreur.

ERREURS

EPERM
    Le processus (par exemple init), ne peut pas etre suivi ou est deja suivi.

ESRCH
    Le processus indique n'existe pas.

EIO Request n'est pas valide.

CONFORMITE
SVr4, SVID EXT, AT&T, X/OPEN, BSD 4.3

VOIR AUSSI
gdb(1), exec(3), signal(2), wait(2)