ptrace | Début | Suivant | Sommaire | Préc.page.lue | Accueil |
NOM | Début | Précédent | Suivant | Sommaire | Préc.page.lue | Accueil |
SYNOPSIS | Début | Précédent | Suivant | Sommaire | Préc.page.lue | Accueil |
#include <sys/ptrace.h> long ptrace(enum __ptrace_request requête, pid_t pid, void *addr, void *data);
DESCRIPTION | Début | Précédent | Suivant | Sommaire | Préc.page.lue | Accueil |
Le père peut démarrer un suivi en appelant fork(2) et que le fils créé fasse un PTRACE_TRACEME,suivi(engénéral)parun exec(3). Autrement, le père peut commencer un suivi sur un processus existant en utilisant PTRACE_ATTACH.
Le processus fils suivi s'arrêtera à chaque fois qu'un signal lui sera délivré, même si le signal est ignoré (à l'exception de SIGKILL qui a les effets habituels). Le père sera prévenu à son prochain wait(2) et pourra inspecter et modifier le processus fils pendant son arrêt. Le parent peut également faire continuer l'exécution de son fils, éventuellement en ignorant le signal ayant déclenché l'arrêt, ou envoyant un autre signal.
Quand le père a fini le suivi, il peut terminer le fils avec PTRACE_KILL ou le faire continuer normalement, non suivi, avec PTRACE_DETACH.
La valeur de l'argument requête indique précisément l'action à entreprendre.
La requête ci-dessus ne sert que dans le processus fils. Les autres ne servent que dans le père. Par la suite, pid précise le fils sur lequel agir. Pour les requêtes autres que PTRACE_KILL,lefilsdoitêtrearrêté.
est ignoré).
VALEUR RENVOYÉE | Début | Précédent | Suivant | Sommaire | Préc.page.lue | Accueil |
ERREURS | Début | Précédent | Suivant | Sommaire | Préc.page.lue | Accueil |
CONFORMITÉ | Début | Précédent | Suivant | Sommaire | Préc.page.lue | Accueil |
NOTES | Début | Précédent | Suivant | Sommaire | Préc.page.lue | Accueil |
init(8), le processus numéro 1, ne peut pas être suivi.
La disposition du contenu de la mémoire et de la zone USER dépendent du système d'exploitation et de l'architecture. Le décalage fourni et la donnée renvoyée peuvent ne pas correspondre entièrement avec la définition de struct user.
La taille d'un mot, « word » est déterminée par la version du système d'exploitation (par exemple 32 bits pour Linux 32 bits, etc.)
Le suivi peut engendrer des modifications subtiles dans le fonctionnement du processus. Par exemple, si un processus est attaché avec PTRACE_ATTACH, son père original ne peut plus recevoir les notifications avec wait(2) lorsqu'il s'arrête,
et il n'y a pas de moyen de simuler cette notification.
Lorsque le parent reçoit un événement avec PTRACE_EVENT_* activé, le fils n'est pas dans la procédure normale de réception du signal. Cela signifie que le parent ne peut pas effectuer un ptrace(PTRACE_CONT) avec un signal ou ptrace(PTRACE_KILL). On peut utiliser kill(2) avec un signal SIGKILL plutôt que de tuer le processus fils après la réception d'un de ces messages.
Cette page documente le fonctionnement actuel de ptrace() sous Linux. Celui-ci peut varier sensiblement sur d'autres types d'Unix. De toute façon, l'utilisation de ptrace() dépend fortement de l'architecture et du système d'exploitation.
La page de manuel de SunOS décrit ptrace() comme un appel système « unique and arcane », ce qu'il est. Le mécanisme de débogage basé sur le système proc, présent dans Solaris 2 implémente un sur-ensemble des fonctionnalités de ptrace() de manière plus puissante et plus uniforme.
BOGUES | Début | Précédent | Suivant | Sommaire | Préc.page.lue | Accueil |
VOIR AUSSI | Début | Précédent | Suivant | Sommaire | Préc.page.lue | Accueil |
TRADUCTION | Début | Précédent | Suivant | Sommaire | Préc.page.lue | Accueil |
Ce document est une traduction réalisée par Christophe Blaess <http://www.blaess.fr/christophe/> le 12 octobre 1996 et révisée le 6 juin 2008.
L'équipe de traduction a fait le maximum pour réaliser une adaptation française de qualité. La version anglaise la plus à jour de ce document est toujours consultable via la commande : « LANG=C man 2 ptrace ». N'hésitez pas à signaler à l'auteur ou au traducteur, selon le cas, toute erreur dans cette page de manuel.
Sommaire | Début | Suivant | Sommaire | Préc.page.lue | Accueil |
Table des mots clés | Début | Suivant | Sommaire | Préc.page.lue | Accueil |
EBUSY | ERREURS |
EFAULT | ERREURS |
EINVAL | ERREURS |
EIO | ERREURS |
EPERM | ERREURS |
ESRCH | ERREURS |
PTRACE_ATTACH | DESCRIPTION |
PTRACE_CONT | DESCRIPTION |
PTRACE_DETACH | DESCRIPTION |
PTRACE_GETEVENTMSG (depuis Linux 2.5.46) | DESCRIPTION |
PTRACE_GETREGS, PTRACE_GETFPREGS | DESCRIPTION |
PTRACE_GETSIGINFO (depuis Linux 2.3.99-pre6) | DESCRIPTION |
PTRACE_KILL | DESCRIPTION |
PTRACE_PEEKTEXT, PTRACE_PEEKDATA | DESCRIPTION |
PTRACE_PEEKUSER | DESCRIPTION |
PTRACE_POKETEXT, PTRACE_POKEDATA | DESCRIPTION |
PTRACE_POKEUSER | DESCRIPTION |
PTRACE_SETOPTIONS (depuis Linux 2.4.6 ; | DESCRIPTION |
PTRACE_SETREGS, PTRACE_SETFPREGS | DESCRIPTION |
PTRACE_SETSIGINFO (depuis Linux 2.3.99-pre6) | DESCRIPTION |
PTRACE_SYSCALL, PTRACE_SINGLESTEP | DESCRIPTION |
PTRACE_SYSEMU, PTRACE_SYSEMU_SINGLESTEP (depuis Linux 2.6.14) | DESCRIPTION |
PTRACE_TRACEME | DESCRIPTION |