GNU/Linux >> Tutoriels Linux >  >> Linux

Comment fonctionne un débogueur sous Linux ?

Il existe un appel système nommé ptrace. Il prend 4 paramètres :l'opération, le PID du processus cible, une adresse dans la mémoire du processus cible et un pointeur de données. La façon dont les 2 derniers paramètres sont utilisés dépend de l'opération.

Par exemple, vous pouvez attacher/détacher votre débogueur à un processus :

ptrace(PTRACE_ATTACH, pid, 0, 0);
...
ptrace(PTRACE_DETACH, pid, 0, 0);

Exécution en une seule étape :

ptrace(PTRACE_ATTACH, pid, 0, 0);
int status;
waitpid(pid, &status, WSTOPPED);
while (...) {
    ptrace(PTRACE_SINGLESTEP, pid, 0, 0);
    // give the user a chance to do something
}
ptrace(PTRACE_DETACH, pid, 0, 0);

Vous pouvez également lire/écrire la mémoire du processus cible avec PTRACE_PEEKDATA et PTRACE_POKEDATA. Si vous voulez voir un exemple réel, consultez gdb.


Linux
  1. Comment fonctionne Awk '!a[$0]++' ?

  2. Comment fonctionne le Sticky Bit ?

  3. Linux - Comment la charge moyenne fonctionne-t-elle avec les processeurs modernes ?

  4. Linux - Comment répertorier les espaces de noms sous Linux ?

  5. Ssh – Comment Tcp-keepalive fonctionne-t-il dans Ssh ?

Qu'est-ce que NGINX ? Comment ça marche?

Linux - Comment fonctionne l'affichage de Linux ?

Qu'est-ce que la commande source sous Linux et comment ça marche ?

Comment fonctionne la mémoire d'échange sous Linux ?

Comment fonctionne une interface graphique Linux au niveau le plus bas ?

Comment fonctionne l'affichage de Linux ?