Question:
Définition d'un point d'arrêt lors d'un appel système
Hugo Kiiski
2014-12-17 02:18:19 UTC
view on stackexchange narkive permalink

Je veux modifier mon serveur teamspeak (linux), je suis particulièrement intéressé par la connexion avec les clients (UDP), donc j'ai pensé que je devais définir un point d'arrêt au niveau de la fonction socket linux pour démarrer l'inversion. Comment puis-je y parvenir?

Merci!

Pour écrire: http://stackoverflow.com/questions/8235436/how-can-i-monitor-whats-being-put-into-the-standard-out-buffer-and-break-when-a
Un répondre:
nrz
2014-12-17 03:18:52 UTC
view on stackexchange narkive permalink

Dans gdb , vous pouvez définir un point d'arrêt syscall avec catch syscall .

Si c'est en 32 bits x86 (IA-32), vérifiez le numéro d'appel système dans your_linux_source_dir / usr / include / asm / unistd_32.h . Il n'y a pas d'appel système appelé socket dans 32 bits x86, voulez-vous dire socketcall ? Son numéro est 102.

S'il s'agit de x86-64 (AMD64), vérifiez le numéro d'appel système dans your_linux_kernel_source_dir / usr / include / asm / unistd_64.h . L'appel système appelé socket est 41.

Ensuite, lancez l'exécutable dans gdb:

  $ gdb myexecutable  

Et définissez le point d'arrêt syscall (41 est le numéro syscall socket dans x86-64, changez le numéro d'appel système approprié pour vous):

  (gdb) catch syscall 41  

Et puis exécutez le programme:

  (gdb) r  

L'utilisation du nom de l'appel système (tel que socket ) au lieu du numéro (par exemple 41 ) peut également fonctionner, selon votre configuration.

Je n'ai aucune idée de quand cela a été ajouté. Mais maintenant, vous pouvez utiliser le nom syscall au lieu de son numéro. Donc, juste `catch syscall socket`.


Ce Q&R a été automatiquement traduit de la langue anglaise.Le contenu original est disponible sur stackexchange, que nous remercions pour la licence cc by-sa 3.0 sous laquelle il est distribué.
Loading...