Il s'agit de la commande perf-probe qui peut être exécutée dans le fournisseur d'hébergement gratuit OnWorks en utilisant l'un de nos multiples postes de travail en ligne gratuits tels que Ubuntu Online, Fedora Online, l'émulateur en ligne Windows ou l'émulateur en ligne MAC OS
PROGRAMME:
Nom
perf-probe - Définir de nouveaux points de trace dynamiques
SYNOPSIS
Perf sonde [options] --ajouter=SONDE [...]
or
Perf sonde [options] SONDER
or
Perf sonde [options] --del=[GROUPE :] ÉVÉNEMENT [...]
or
Perf sonde --list[=[GROUPE:]ÉVÉNEMENT]
or
Perf sonde [options] --line=LINE
or
Perf sonde [options] --vars=POINT DE SONDE
or
Perf sonde [options] --fonctions
DESCRIPTION
Cette commande définit les événements de point de trace dynamiques, par symbole et registres sans debuginfo,
ou par des expressions C (numéros de ligne C, noms de fonction C et variables locales C) avec
les informations de débogage.
OPTIONS
-k, --vmlinux=CHEMIN
Spécifiez le chemin vmlinux qui a debuginfo (binaire nain).
-m, --module=MODNAME|CHEMIN
Spécifiez le nom du module dans lequel perf-probe recherche les points ou les lignes de la sonde. Si un chemin de
module est transmis, perf-probe le traite comme un module hors ligne (cela signifie que vous pouvez
ajouter une sonde sur un module qui n'a pas encore été chargé).
-s, --source=CHEMIN
Spécifiez le chemin d'accès à la source du noyau.
-v, --verbeux
Soyez plus verbeux (afficher les arguments analysés, etc.). Ne peut pas être utilisé avec -q.
-q, --calme
Soyez silencieux (n'affichez aucun message contenant des erreurs). Ne peut pas être utilisé avec -v.
-a, --ajouter=
Définissez un événement de sonde (voir PROBE SYNTAX pour plus de détails).
-d, --del=
Supprimer les événements de sonde. Cela accepte les caractères génériques glob (*, ?) et les classes de caractères (par exemple
[az], [!AZ]).
-l, --list[=[GROUPE:]EVENEMENT]
Répertorier les événements de sonde en cours. Cela peut également accepter des modèles de filtrage des noms d'événements.
-L, --ligne=
Afficher les lignes de code source qui peuvent être sondées. Cela nécessite un argument qui spécifie un
plage du code source. (voir SYNTAXE DE LIGNE pour plus de détails)
-V, --vars=
Afficher les variables locales disponibles à un point de sonde donné. La syntaxe des arguments est la même que
SONDER LA SYNTAXE, mais PAS d'ARG.
--externes
(Uniquement pour --vars) Affiche les variables externes définies en plus des variables locales.
--pas de ligne
(Uniquement pour --add) Rechercher uniquement les fonctions non alignées. Les fonctions qui ne
ont des instances sont ignorées.
-F, --funcs[=FILTRE]
Afficher les fonctions disponibles dans un module ou un noyau donné. Avec -x/--exec, peut également lister
fonctions dans un espace utilisateur exécutable/bibliothèque partagée. Cela peut également accepter un FILTRE
argument de règle.
--filter=FILTRE
(Uniquement pour --vars et --funcs) Définir le filtre. FILTER est une combinaison de motif glob, voir
MOTIF DE FILTRE pour plus de détails. FILTRE par défaut est "!k???tab_* & !crc_*" pour --vars, et
"!_*" pour --funcs. Si plusieurs filtres sont spécifiés, seul le dernier filtre est utilisé.
-f, --force
Ajouter de force des événements avec un nom existant.
-n, --exécution à sec
Course à sec. Avec cette option, --add et --del n'exécutent pas d'ajout et de suppression réels
fonctionnement sans maintenance
--max-sondes=NUM
Définissez le nombre maximal de points de sonde pour un événement. La valeur par défaut est 128.
-x, --exec=CHEMIN
Spécifiez le chemin d'accès au fichier exécutable ou de bibliothèque partagée pour le traçage de l'espace utilisateur. Peut aussi
être utilisé avec l'option --funcs.
--démêler
Démêler les symboles d'application. --no-demangle est également disponible pour désactiver
démanteler.
--demangle-noyau
Démêler les symboles du noyau. --no-demangle-kernel est également disponible pour désactiver le noyau
démanteler.
En l'absence d'options -m/-x, perf probe vérifie si le premier argument après les options est
un nom de chemin absolu. S'il s'agit d'un chemin absolu, la sonde perf l'utilise comme cible
binaire de l'espace utilisateur module/cible à tester.
SONDE SYNTAXE
Les points de sonde sont définis par la syntaxe suivante.
1) Définir l'événement en fonction du nom de la fonction
[EVENT=]FUNC[@SRC][:RLN|+OFFS|%retour|;PTN] [ARG ...]
2) Définir l'événement en fonction du fichier source avec le numéro de ligne
[EVENEMENT=]SRC:ALN [ARG ...]
3) Définir l'événement en fonction du fichier source avec un motif paresseux
[EVENEMENT=]SRC;PTN [ARG ...]
EVENT spécifie le nom du nouvel événement, s'il est omis, il sera défini le nom du sondé
fonction. Actuellement, le nom du groupe d'événements est défini comme sonde. FUNC spécifie une fonction sondée
name, et il peut avoir l'une des options suivantes; +OFFS est le décalage de la fonction
adresse d'entrée en octets, :RLN est le numéro de ligne relative de la ligne d'entrée de fonction, et
%revenir signifie qu'il sonde le retour de fonction. Et ;PTN signifie modèle de correspondance paresseux (voir
CORRESPONDANCE PARESSEUX). Noter que ;PTN doit être la fin de la définition du point de sonde. En outre,
@SRC spécifie un fichier source qui a cette fonction. Il est également possible de spécifier un
point de sonde par le numéro de ligne source ou correspondance paresseuse en utilisant SRC : ALN or CRS;PTN syntaxe,
où SRC est le chemin du fichier source, :ALN est le numéro de ligne et ;PTN est la correspondance paresseuse
motif. ARG spécifie les arguments de ce point de sonde (voir ARGUMENT DE SONDE).
SONDE ARGUMENT
Chaque argument de sonde suit la syntaxe ci-dessous.
[NAME=]LOCALVAR|$retval|%REG|@SYMBOL[:TYPE]
Nom spécifie le nom de cet argument (facultatif). Vous pouvez utiliser le nom de local
variable, membre de la structure de données locale (par exemple var→field, var.field2), tableau local avec
index (par exemple array[1], var→array[0], var→pointer[2]), ou format d'argument kprobe-tracer
(par exemple $retval, %ax, etc.). Notez que le nom de cet argument sera défini comme le dernier
nom de membre si vous spécifiez un membre de structure de données local (par exemple field2 pour
var→champ1.champ2.) $vars et mes $paramètres des arguments spéciaux sont également disponibles pour NAME, $vars
est étendu aux variables locales (y compris les paramètres de fonction) qui peuvent accéder à
point de sonde donné. $paramètres est étendu aux seuls paramètres de la fonction. TYPE jette le
type de cet argument (facultatif). En cas d'omission, la sonde de perf définit automatiquement le type en fonction
sur debuginfo. Vous pouvez spécifier un magnifique type uniquement pour la variable locale ou le membre de la structure
qui est un tableau ou un pointeur vers carboniser or non signé carboniser type.
Sur les systèmes x86, %REG est toujours la forme abrégée du registre : par exemple %AX. %RAX ou
%EAX n'est pas valide.
LINE SYNTAXE
La plage de lignes est décrite par la syntaxe suivante.
"FUNC[@SRC][:RLN[+NUM|-RLN2]]|SRC[:ALN[+NUM|-ALN2]]"
FUNC spécifie le nom de la fonction d'affichage des lignes. RLN est le numéro de la ligne de départ à partir de
ligne de saisie de fonction, et RLN2 est le numéro de fin de ligne. Identique à la syntaxe de la sonde, SRC veux dire
le chemin du fichier source, ALN est le numéro de la ligne de départ, et ALN2 est le numéro de fin de ligne dans le fichier.
Il est également possible de spécifier le nombre de lignes à afficher en utilisant NUM. Par ailleurs, FUNC@SRC
la combinaison est bonne pour rechercher une fonction spécifique lorsque plusieurs fonctions partagent la même
Nom. Ainsi, "source.c:100-120" affiche les lignes entre le 100e et le 20e dans le fichier source.c. Et
"func:10+20" affiche 20 lignes à partir de la 10e ligne de la fonction func.
PARESSEUX CORRESPONDANT À
La correspondance de ligne paresseuse est similaire à la correspondance de glob mais en ignorant les espaces dans le modèle et la cible. Cela accepte donc les caractères génériques('*', '?') et les classes de caractères (par exemple [az], [!AZ]).
par exemple un=* peut correspondre a = b, a = b, a == b etc.
Cela offre une sorte de flexibilité et de robustesse pour tester les définitions de points par rapport à
modifications mineures du code. Par exemple, la 10e ligne réelle de l'horaire () peut être facilement déplacée en
modification de schedule(), mais la même ligne correspond rq=cpu_rq* peut encore exister dans le
fonction.)
FILTRE RECONNAISSANCE
Le modèle de filtre est un ou plusieurs modèles de correspondance glob pour filtrer les variables.
De plus, vous pouvez utiliser "!" pour spécifier la règle de filtrage. Vous pouvez également donner plusieurs règles combinées avec "&" ou "|", et plier ces règles en une seule règle en utilisant "(" ")".
par exemple, avec --filter "foo* | bar*", perf probe -V affiche les variables qui commencent par "foo" ou
"bar". Avec --filter "!foo* & *bar", perf probe -V affiche les variables qui ne commencent pas par
"foo" et terminez par "bar", comme "fizzbar". Mais "foobar" est filtré.
EXEMPLES
Afficher quelles lignes dans schedule() peuvent être sondées :
./perf sonde --line planning
Ajout d'une sonde sur la fonction schedule() 12e ligne avec enregistrement de la variable locale du processeur :
./programmation de la sonde de performance : 12 cpu
or
./perf probe --add='schedule:12 cpu'
cela ajoutera une ou plusieurs sondes dont le nom commence par "schedule".
Ajoutez des sondes sur les lignes de la fonction schedule() qui appelle update_rq_clock().
./perf sonde 'planning;update_rq_clock*'
or
./perf probe --add='schedule;update_rq_clock*'
Supprimez toutes les sondes sur planning().
./perf sonde --del='schedule*'
Ajouter des sondes à la fonction zfree() sur /bin/zsh
./perf probe -x /bin/zsh zfree ou ./perf probe /bin/zsh zfree
Ajouter des sondes à la fonction malloc() sur libc
./perf probe -x /lib/libc.so.6 malloc ou ./perf probe /lib/libc.so.6 malloc
Utilisez perf-probe en ligne en utilisant les services onworks.net