stap -g peut déréférencer des pointeurs et faire ce que tu veux en C dynamiquement sans que le développeur initial ait eu à placer un tracepoint statique.
System tap en fait peut être une exploitation plus poussée oui. Mais dans la branche principale, c'est pas encore le cas.
Non, les statiques sont moins puissants parce qu'ils sont limités à ce que le développeur initial a prévu. Les dynamiques sont plus puissants parce qu'ils permettent d'observer tout et n'importe quoi mais ils sont potentiellement plus compliqués à utiliser puisqu'il faut se familiariser avec le code à tracer.
De ce côté là oui, les statiques sont moins puissants, je n'ai pas dit le contraire.
Mais les dynamique n'atteindront jamais la puissance des statiques en ce qui concerne les données à sortir.
Par exemple on a un tracepoint statique pour les évenements où un inode devient "dirty".
Pour retrouver le nom de l'inode, on a besoin de le vérrouiller, d'appeler une fonction pour chercher le dentry correspondant, de faire des copies, de déverrouiller et enfin de décrémenter son compteur de référence.
Impossible avec un tracepoint dynamique.
Il n'ont pas le même usage ni le même rôle, tout simplement.
[^] # Re: À propos du tracing
Posté par fweisbec . En réponse à la dépêche Nouvelle version 2.6.33 du noyau Linux. Évalué à 2.
System tap en fait peut être une exploitation plus poussée oui. Mais dans la branche principale, c'est pas encore le cas.
Non, les statiques sont moins puissants parce qu'ils sont limités à ce que le développeur initial a prévu. Les dynamiques sont plus puissants parce qu'ils permettent d'observer tout et n'importe quoi mais ils sont potentiellement plus compliqués à utiliser puisqu'il faut se familiariser avec le code à tracer.
De ce côté là oui, les statiques sont moins puissants, je n'ai pas dit le contraire.
Mais les dynamique n'atteindront jamais la puissance des statiques en ce qui concerne les données à sortir.
Par exemple on a un tracepoint statique pour les évenements où un inode devient "dirty".
Pour retrouver le nom de l'inode, on a besoin de le vérrouiller, d'appeler une fonction pour chercher le dentry correspondant, de faire des copies, de déverrouiller et enfin de décrémenter son compteur de référence.
Impossible avec un tracepoint dynamique.
Il n'ont pas le même usage ni le même rôle, tout simplement.