22.2. Créer des uprobes sur des lignes dans une fonction avec perf
Ces tracepoints peuvent ensuite être utilisés en conjonction avec d'autres outils perf
tels que perf stat
et perf record
afin de mieux comprendre le processus ou le comportement des applications.
Conditions préalables
-
L'outil de l'espace utilisateur
perf
est installé comme décrit dans la section Installation de perf. Vous avez obtenu les symboles de débogage pour votre exécutable :
# objdump -t ./your_executable | head
NotePour ce faire, le paquet
debuginfo
de l'exécutable doit être installé ou, si l'exécutable est une application développée localement, l'application doit être compilée avec des informations de débogage, l'option-g
dans GCC.
Procédure
Visualisez les lignes de fonction où vous pouvez placer une robe montante :
$ perf probe -x ./your_executable -L main
La sortie de cette commande ressemble à ce qui suit :
<main@/home/user/my_executable:0> 0 int main(int argc, const char **argv) 1 { int err; const char *cmd; char sbuf[STRERR_BUFSIZE]; /* libsubcmd init */ 7 exec_cmd_init("perf", PREFIX, PERF_EXEC_PATH, EXEC_PATH_ENVIRONMENT); 8 pager_init(PERF_PAGER_ENVIRONMENT);
Créer la robe montante pour la ligne de fonction souhaitée :
# perf probe -x ./my_executable main:8 Added new event: probe_my_executable:main_L8 (on main:8 in /home/user/my_executable) You can now use it in all perf tools, such as: perf record -e probe_my_executable:main_L8 -aR sleep 1