Il s'agit de la commande latrace qui peut être exécutée dans le fournisseur d'hébergement gratuit OnWorks à l'aide de 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
latrace - LD_AUDIT 2.4+ interface libc
SYNOPSIS
commande latrace [-snltfvhiBdISbcCyYLpoaNADVTFERq] [arg ... ]
DESCRIPTION
Le traceur latrace est capable d'exécuter une commande et d'afficher ses appels de bibliothèque dynamiques à l'aide d'un
Fonctionnalité LD_AUDIT libc, disponible à partir de la version 2.4 de la libc. Il est également capable de
mesurer et afficher diverses statistiques d'appels dynamiques. Voir la section intitulée
« DISCUSSION » pour plus de détails.
Si le fichier d'en-tête avec les déclarations des fonctions est fourni, latrace affichera
arguments des fonctions. La syntaxe du fichier d'en-tête est similaire au langage C, avec
plusieurs exceptions Voir la section intitulée « EN-TÊTES » pour plus de détails.
Le latrace par défaut fonctionne pleinement à l'intérieur du programme tracé. Cependant un autre "tuyau
mode" est disponible pour déplacer le travail principal vers le traceur - le binaire latrace. Voir le
section intitulée « mode PIPE » pour plus de détails.
L'utilisation des latraces est similaire à strassde Géographie (1) et avec la trace (1).
OPTIONS
-l, --libs lib1[,lib2,...]
audit de et vers lib1, lib2 ...
-t, --libs-to lib1[,lib2,...]
audit vers lib1, lib2 ...
-f, --libs-de lib1[,lib2,...]
audit de lib1, lib2 ...
-s, --sym sym1[,sym2,...]
symboles d'audit sym1, sym2 ...
-n, --sym-omettre sym1[,sym2,...]
omettre les symboles sym1, sym2 ...
-L, --lib-subst s1[,s2,...]
interface objsearch LD_AUDIT (Voir la section intitulée « OBJSEARCH »)
-c, --compte
afficher les statistiques du nombre de symboles - implique le mode pipe (voir la section intitulée "PIPE
mode") une sortie sans symbole s'affiche
-C, --sort-counts statistiques
implique -c, plus trier les statistiques par stat avec les valeurs suivantes :
time,per,call,ucall,lib,sym (appel par défaut)
-p, --tuyau
utiliser le processus pipe to latrace pour envoyer les données d'audit (voir la section intitulée « mode PIPE »)
-N, --conf
fichier de configuration (voir la section intitulée « CONFIG »)
-A, --enable-args
activer la sortie des arguments (définitions de /etc/latrace.conf)
-D, --détail-arguments
afficher les arguments de structure plus en détail
-a, --args fichier
spécifier le fichier de définition des arguments, implique -A (sans le fichier de définition par défaut de
cours)
-y, --framesize nombre
framesize pour stocker la pile avant pltexit (par défaut 100)
-Y, --no-framesize-check
désactiver la vérification de la taille des images
-F, --no-follow-fork
ne suivez pas les appels de fourche (enfants). Ceci supprime simplement la sortie latrace du nouveau
enfants. La nature du LD_AUDIT fonction empêche de le désactiver complètement.
-E, --no-follow-exec
ne suivez pas les appels de l'exécutif
-S, --horodatage
afficher l'horodatage pour chaque symbole
-b, --flow-below sym1[,sym2,...]
flux d'affichage pour sym1, sym2 ...
-Je, --no-indent-sym
ne pas indenter les symboles en fonction de la profondeur de leur pile
-i, --indent-sym retrait_size
spécification de la taille du retrait dans indent_size
-B, --accolades
toujours afficher { } pour le corps du symbole
-d, --demangle
Symboles de démêlage C++ sur la sortie
-T, --hide-tid
ne pas afficher l'identifiant du fil
-o, --fichier de sortie
stocker la sortie dans un fichier
-R, --ctl-config
fonction de configuration contrôlée
-q, --désactiver
exécuter avec l'audit désactivé
-v, --verbeux
sortie verbeuse
-V, --version
afficher la version
-h, --aide
afficher l'aide
EXEMPLES
· La façon la plus simple d'exécuter latrace est la suivante :
chat latrace
· Pour voir les valeurs d'argument spécifiées par le fichier de configuration par défaut, exécutez :
latrace -Un chat
· Comme ci-dessus, mais en utilisant le mode pipe pour imprimer tous les symboles de fin :
latrace -Ap chat
· Pour voir les valeurs d'argument spécifiées par le fichier de configuration spécifié, exécutez :
latrace -a latrace.conf chat
· Pour obtenir une sortie uniquement pour le symbole spécifié (par exemple, lecture et écriture), exécutez :
latrace -A -s lire, écrire chat
· Pour obtenir le flux sous le symbole spécifié (par exemple, sysconf), exécutez :
latrace -b sysconf tuer
· Pour obtenir une sortie uniquement pour la bibliothèque spécifiée (par exemple, libproc), exécutez :
latrace -Al libproc w
· Pour obtenir des statistiques de symboles, procédez comme suit :
latrace -c ls
· Pour obtenir des statistiques de symboles triées par temps d'exécution :
latrace -C temps ls
· Pour obtenir la sortie stockée dans le fichier texte, exécutez :
latrace -o sortie.latrace ls
· Pour changer la dépendance de libkrava1.so en libkrava2.so, exécutez l'une des actions suivantes :
latrace -L krava1%krava2 ex
latrace -L krava1~libkrava2.so ex
latrace -L libkrava1.so=libkrava2.so ex
DISCUSSION
DES NOMS COMMENCER
Pour les options "-l -t -f -s -n -b" le * le symbole peut être utilisé pour passer à la sous-chaîne
chercher. S'il n'est pas spécifié, la recherche exacte du nom est effectuée.
Exemples :
-s "*krava" vérifie les symboles avec la sous-chaîne "krava".
-s "krava" vérifie uniquement le symbole "krava"
LD_AUDIT
Ceci n'est qu'une brève et vague description de la LD_AUDIT caractéristique. Pour plus d'informations
regarder à audit-rtld(7) en anglais man fait par Petr Baudis ou étudiez le code source glibc/latrace. Très
une brève explication suit.
La fonction d'audit de l'éditeur de liens dynamique libc permet de tracer/auditer les symboles/bibliothèques du programme.
La fonction est activée par le LD_AUDIT variable d'environnement. Cette variable doit contenir
chemin d'accès à la bibliothèque partagée d'audit. Cette bibliothèque d'audit doit suivre une interface spécifique.
Les fonctions d'interface seront ensuite appelées par l'éditeur de liens dynamiques de manière appropriée.
La bibliothèque d'audit doit exporter les symboles suivants (le "la_PLTENTER" et "la_PLTEXIT"
les noms dépendent de l'architecture).
"la_activité"
"la_objsearch"
"la_objopen"
"la_preinit"
"la_symbind32"
"la_symbind64"
"la_PLTENTER"
"la_PLTEXIT"
"la_objclose"
En ce qui concerne le package latrace, la bibliothèque partagée d'audit s'appelle libltaudit.so.
RECHERCHE D'OBJETS
La recherche obj LD_AUDIT l'interface fournit des moyens pour changer l'objet partagé du programme tracé
noms/lieux. L'argument de l'option -L doit avoir la forme suivante :
-L s1[,s2,...] où sN est src [=%~] dst
src est le modèle/nom source et dst est le nom/modèle de destination.
= Comparer src avec la bibliothèque
Nom. S'il correspond, remplacez le
nom de la bibliothèque avec dst.
nom de la bibliothèque - /lib/krava1.so
src - /lib/krava1.so
heure d'été - /lib/krava2.so
nom final de la bibliothèque - /lib/krava2.so
% Recherche du src dans le nom de la bibliothèque. Si
trouvé, remplacez le src par dst part.
nom de la bibliothèque - /lib/krava1.so
src-krava1
heure d'été - krava2
nom final de la bibliothèque - /lib/krava2.so
~ Recherche du src dans le nom de la bibliothèque. Si
trouvé, remplacez le nom de la bibliothèque par dst.
nom de la bibliothèque - /lib/krava1.so
src-krava1
heure d'été - /lib/krava2.so
nom final de la bibliothèque - /lib/krava2.so
TUYAU mode
latrace peut fonctionner dans deux modes. Le premier indigène fait la sortie directement dans
le processus du programme tracé. L'autre, pipe utiliser le mécanisme fifo IPC pour envoyer
les données du processus tracé au processus latrace. Le processus de latrace est alors
responsable de la sortie. En utilisant le mode pipe, vous perdez la norme du programme tracé
contexte de sortie avec symboles imprimés.
En utilisant le pipe mode, le latrace ne dépend pas du programme de trace
utilisation/manipulation du descripteur de sortie standard. Aussi les statistiques de symboles comptent
-c, -C Options utiliser le pipe mode pour transférer les informations de symbole vers le binaire latrace, et
le binaire latrace fait les comptes à la fin.
CONFIG
Le latrace offre la possibilité d'activer/désactiver certaines des options au moyen de
fichier de configuration. Certaines des options sont liées aux arguments de la ligne de commande certains des
eux ne le sont pas. Lorsque latrace démarre, le fichier de configuration global est lu. Ce fichier est
étant généralement placé ici :
/etc/latrace.d/latrace.conf
Ayant les valeurs par défaut lues à partir de ce fichier, l'utilisateur peut surcharger l'une d'entre elles par ligne de commande
options ou en fournissant un autre fichier de configuration via -N, --conf option.
La syntaxe du fichier de configuration est à peu près :
COMPRENDRE
OPTIONS {
OPTION1 = VALEUR
OPTION2 = OUI|NON
...
OPTIONN = VALEUR
}
# commenter
Configuration filet Options
EN-TÊTES = FICHIER
-a, --args
INDENT_SYM = VALEUR
-i, --indent-sym
TUYAU = BOOL
-p, --tuyau
HORODATAGE = BOOL
-S, --horodatage
TAILLE CADRE = VALEUR
-y, --framesize
FRAMESIZE_CHECK = BOOL
-Y, --no-framesize-check
HIDE_TID = BOOL
-T, --hide-tid
FOLLOW_FORK = BOOL
-F, --no-follow-fork
FOLLOW_EXEC = BOOL
-E, --no-follow-exec
DÉMANGLER = BOOL
-d, --demangle
BRETELLES = BOOL
-B, --accolades
ENABLE_ARGS = BOOL
-A, --enable-args
DETAIL_ARGS = BOOL
-D, --détail-arguments
OUTPUT_TTY = FICHIER
· stocke la sortie du terminal tracee dans le fichier
LIBS = LIB1[,LIB2,...]
-l, --libs
LIBS_TO = LIB1[,LIB2,...]
-t, --libs-to
LIBS_FROM = LIB1[,LIB2,...]
-f, --libs-de
SYM = SYM1[,SYM2,...]
-s, --sym
SYM_OMIT = SYM1[,SYM2,...]
-n, --sym-omettre
SYM_BAS = SYM1[,SYM2,...]
-b, --flow-ci-dessous
SYM_NOEXIT = SYM1[,SYM2,...]
· symboles qui n'exécutent pas de rappel de sortie (plt_exit)
ARGS_STRING_POINTER_LENGTH = BOOL
· arguments de fonction - afficher la longueur de la chaîne et la valeur du pointeur
EN-TÊTES
Le fichier d'en-tête latrace permet à l'utilisateur de définir des symboles comme des fonctions C classiques avec
arguments. Les noms d'argument seront affichés avec les valeurs en tant que sortie latrace.
Plus il y a d'arguments définis, plus les performances et les pénalités de mémoire doivent être importantes.
attendu.
Le package est livré avec plusieurs fichiers d'en-tête prédéfinis pour les plus couramment utilisés
les fonctions. La liste des fichiers d'en-tête glibc utilisés suit (la liste suit principalement le ltrace
liste des fichiers d'en-tête, et l'auteur est prêt à la mettre à jour en fonction des besoins)
ctype.h dirent.h dlfcn.h fcntl.h getopt.h inet.h ioctl.h
libintl.h libio.h locale.h misc.h mman.h ncurses.h netdb.h
pthread.h pwd.h ressource.h signal.h socket.h stat.h stdio.h
stdlib.h chaîne.h syslog.h terme.h termios.h heure.h typedefs.h
unistd.h utmp.h attendre.h
Les fichiers d'en-tête latrace sont généralement stockés dans le répertoire :
/etc/latrace.d/headers/
L'utilisateur peut spécifier un seul fichier d'en-tête à l'aide de l'option de ligne de commande ou du fichier de configuration. Cette
fichier peut alors inclure d'autres en-têtes nécessaires. Comme déjà mentionné, le fichier de configuration latrace
la syntaxe suit légèrement la syntaxe du langage C. La partie suivante décrit la configuration de latrace
langue du fichier.
· Nombreuses POD types (données anciennes simples), sont codés en dur dans latrace. Taille de ces arguments
est déterminé par la taille de la macro. La liste suit.
annuler
caractère u_char
court u_court
int u_int
depuis longtemps
llong u_llong # (long long)
flotteur double
· Le typedef le mot-clé permet de spécifier un nouveau type basé sur celui déjà existant (POD
ou typé). Même s'il existe un moyen pour plusieurs couches de pointeur dans le type
définition (*), une seule est prise.
typedef base_type nouveau_type ;
typedef type_base * nouveau_type ;
typedef base_type ** nouveau_type;
· Commentaires suivez le style C /\* \*/ logique.
/\* commentaires \*/
· Le comprennent Le mot-clé permet d'inclure un autre fichier de configuration.
#include "nom de fichier"
· Le struct le mot-clé permet de définir la structure. La syntaxe suit la grammaire suivante
règles.
START :: struct NAME { STRUCT_DEF };
STRUCT_DEF :: DEF | VIDE
DEF :: NOM NOM |
NOM '*' NOM |
struct NOM NOM |
struct NOM '*' NOM
NOM :: [-0-9a-zA-Z_]+
· Le fonction la définition suit la syntaxe suivante (DEF et NAME sont les mêmes que pour
définition de structure).
START:: DEF '(' ARGS ')' ';'
ARGS:: ARGS ',' DEF | DEF | VIDE
· Le enum la définition suit la syntaxe suivante (NAME est le même que pour la définition de structure).
START :: ENUM NAME '{' ENUM_DEF '}' ';'
ENUM_DEF :: ENUM_DEF ',' ENUM_ELEM | ENUM_ELEM
ENUM_ELEM :: NAME '=' NAME | NOM
· Exemple d'un fichier de configuration latrace simple.
---[ couper ici ]-----------------------------
énumération krava {
krava1 = 1,
krava2,
krava3 = 100
};
#include "krava.conf"
typedef u_int pid_t ;
structure ex_st {
pid_t p;
nombre entier ;
char *nom;
};
int f1(pid_t p, struct ex_st *k);
int f2(char* nom, struct ex_st k, int k = krava);
struct ex_st* f3(pid_t *p, struct ex_st k);
---[ couper ici ]-----------------------------
· Les tableaux ne sont pas encore pris en charge, il n'y a donc aucun moyen de définir certaines structures. Pour un tel
les structures utilisent le type void* où l'argument de structure est passé par un pointeur. Si ça
est passé par valeur, il n'y a pas de solution de contournement jusqu'à présent (à part le remplissage de la structure
corps avec des types de POD jusqu'à la longueur réelle de la structure :).
· Les listes d'arguments variables (va_list/...) ne sont pas encore prises en charge. La définition de la fonction
doit s'arrêter avant le premier argument de la liste d'arguments variables.
PORTS
Latrace devrait fonctionner sur n'importe quel système glibc avec le support LD_AUDIT. Cependant des arguments
les détails sont spécifiques à l'architecture et nécessitent un support spécial à l'intérieur de latrace lui-même.
L'auteur est prêt à porter la trace sur n'importe quelle architecture, tant qu'il a accès à
système correspondant. Les ports actuellement fonctionnels sont :
x86 ok
x86_64 ok
Bras ok
Utiliser latrace en ligne à l'aide des services onworks.net
