2015-04-24 1 views
1

Comment suivre un appel système d'un piège au noyau, à la façon dont les arguments sont passés, à la manière dont le système se situe dans le noyau, au traitement de l'appel système dans le noyau, au retour à l'utilisateur et comment l'état est restauré?Comment tracer un appel système sous Linux?

Répondre

1

Vous pouvez utiliser les options -f et -ff. Quelque chose comme ceci:

strace -f -e trace=process bash -c 'ls; :' 

-f processus enfants Trace car ils sont créés par processus actuellement tracés en raison de l'appel système fork (2).

-ff Si l'option de nom de fichier -o est en vigueur, chaque trace de processus est écrit à filename.pid où pid est l'identifiant du processus numérique de chaque processus. Ceci est incompatible avec -c, car aucun compte par processus n'est conservé.

+0

Remarque: "processus" fait référence à la notion de processus * du noyau, qui est généralement appelée "thread" dans userland. – o11c

2

En fait, il est relativement facile à utiliser ftrace. Voici un article classique par Steven, "Mr. ftrace", Rostedt. La deuxième partie est here. Il ya un free video par Jan-Simon Möller de la Linux Foundation, et beaucoup d'autres bons articles d'introduction que vous pouvez trouver en utilisant des termes de recherche tels que "ftrace tutorial" ou "exemple ftrace".