strace est un logiciel open source et distribué gratuitement conçu pour les développeurs et les administrateurs système, fournissant un traceur d'appel système implémenté en C et conçu pour fonctionner exclusivement sous les systèmes d'exploitation GNU / Linux.
Le programme est un utilitaire de débogage, d'instruction et de diagnostic très utile qui peut rassembler tous les appels système générés par un programme ou un processus et imprimer une trace. Il s'agit d'un programme de ligne de commande qui ne peut être utilisé qu'à partir d'un environnement de console ou via une application d'émulation de terminal.
L'outil peut être utilisé par les diagnostiqueurs, les dépanneurs, ainsi que par les administrateurs système qui recherchent une solution inestimable pour résoudre les problèmes liés aux programmes fermés. Il est écrit par Dmitry V. Levin, Roland McGrath et Wichert Akkerman.
Options de ligne de commande
Comme tous les autres logiciels de ligne de commande, strace offre une grande variété d'options de ligne de commande qui permettent à l'utilisateur d'utiliser facilement toutes ses fonctionnalités et fonctionnalités pour accomplir ses tâches. Toutes ses options de ligne de commande peuvent être visualisées en un coup d'œil en exécutant la commande & lsquo; strace --help & rsquo; commande.
Parmi les options de ligne de commande les plus intéressantes, nous pouvons citer le support des temps de comptage, des appels et des erreurs pour chaque appel système, la prise en charge de la latence syscall, la prise en charge du traçage des accès ainsi que le soutien pour l'exécution d'un processus de traçage comme un petit-enfant détaché, pas comme un parent.
De plus, vous serez capable d'envoyer des informations de trace à un fichier spécifique au lieu de stderr, pour définir le surcoût du suivi des appels système vers un usec overhead, pour définir un fichier PID pour le processus de trace, pour limiter la longueur des chaînes d'impression pour strsize chars, pour exécuter des commandes en tant que nom d'utilisateur manipulant setgid et / ou setuid, et pour se détacher sur un syscall spécifique.
Premiers pas avec Strace
strace est seulement distribué comme une archive tar source, mais il peut être facilement installé sur de nombreuses distributions de Linux à partir de leurs dépôts logiciels principaux. Pour l'installer à partir de sources, téléchargez simplement la dernière version de Softoware, enregistrez l'archive sur un emplacement de votre choix et décompressez-la.
Ouvrez une application Terminal, accédez à l'emplacement des fichiers d'archive extraits (par exemple, cd /home/softoware/strace-4.9), exécutez ./configure && make & rsquo; commande pour configurer et compiler strace, puis exécutez le & lsquo; make install & rsquo; commande en tant que root ou le & lsquo; sudo make install & rsquo; commande en tant qu'utilisateur privilégié pour installer le système strace.
Quoi de neuf dans cette version:
- Améliorations:
- Ajout de l'option -yy pour imprimer les informations de protocole et d'adresse associées aux descripteurs de socket.
- Extended & quot; -e read = set & quot; et "-e write = set"; options pour couvrir les appels système sendmsg, recvmsg, sendmmsg et recvmmsg.
- Implémentation du décodage complet 32 bits des commandes ioctl (résolution du bug n ° 692913 de Debian et du bug n ° 902788 de Fedora).
- Implémentation du support de l'API PTRACE_GETREGS sur ia64.
- Implémentation du support de l'API PTRACE_GETREGS sur mips.
- Implémentation du support de l'API PTRACE_GETREGSET sur s390 / s390x.
- Implémentation du décodage des appels système getrandom et seccomp.
- Implémentation du décodage complet des ensembles de capacités 64 bits
- Implémentation du décodage de toutes les commandes prctl.
- Implémentation du décodage des commandes ioctl paramétrées.
- Implémentation du décodage des commandes evocv ioctl.
- Implémentation du décodage des commandes ioctl v4l.
- Implémentation du décodage des commandes ioctl SG_IO v4.
- Implémentation du décodage des commandes ioctl FIFREEZE / FITHAW / FITRIM.
- Implémentation du décodage des drapeaux fallocate FALLOC_FL_ *.
- Implémentation du décodage du masque de signal rt_sigreturn sur aarch64, x32 et x86_64.
- Décodeur de socket amélioré pour prendre en charge les sockets Bluetooth.
- Amélioration du décodage des commandes ioctl non répertoriées.
- Amélioration du décodage de getsockopt et setsockopt syscall.
- Amélioration du décodage de sysinfo syscall.
- Décodage amélioré de struct cmsghdr.
- Amélioration du décodage du statut d'attente.
- Support aio amélioré sur les architectures non-x86 en utilisant libaio.h externe.
- Ajout de O_TMPFILE à la liste des indicateurs de mode ouvert reconnus.
- Mise à jour de la liste des constantes de type de système de fichiers utilisées pour décoder les syscalls de la famille statfs.
- Listes mises à jour des constantes CAP_ *, PR_ *, PTRACE_ *, SCHED_ *, SO_ *, SOL_ *, SWAP_FLAG_ * et TFD_ *.
- Mise à jour des listes de constantes de signal à partir de Linux 3.19.
- Mise à jour des listes de constantes errno à partir de Linux 3.19.
- Mise à jour des listes de commandes ioctl à partir de Linux 3.9.
- Ajout de nouvelles entrées syscall pour correspondre à Linux 3.19.
- Corrections de bugs:
- Correction de diverses erreurs dans le mappage entre les numéros syscall et les informations associées, telles que le nombre d'arguments syscall, le nom de syscall et le décodeur syscall.
- Correction de problèmes de citations dans les descripteurs d'impression, les noms de fichiers, les noms d'interface réseau, les noms de structure, les noms de périphérique / volume des commandes ioctl BLK *.
- Correction du décodage de uid_t / git_t.
- Correction de problèmes de lecture hors-limites potentiels dans les décodeurs getdents / getdents64.
- Correction de la troncature des drapeaux ouverts potentiels sur certaines architectures.
- Correction du décodage de la structure ifreq.ifr_name.
- Correction du décodage de la commande SIOCSIFNAME ioctl.
- Correction du décodage des drapeaux RENAME_ * renameat2.
- Correction du décodage des structures timeval UTIME_NOW / UTIME_OMIT.
- Correction du décodage des sous-couches ipc indirectes sur certaines architectures.
- Correction du décodage de fanotify_mark syscall sur les architectures 32 bits.
- Correction du décodage des structures de statistiques 32 bits sur les architectures 64 bits.
- Correction du décodage de cmsghdr struct 32 bits sur les architectures 64 bits.
- Correction du décodage du décalage preadv / pwritev 32 bits sur les architectures 64 bits.
- Correction du décodage du masque de signal sigreturn / rt_sigreturn sur ia64, ppc, ppc64, sparc, sparc64, mips et s390.
- Correction de la sortie du pointeur d'instruction (option -i) sur les architectures prenant en charge plusieurs personnalités.
- Correction du comportement de "-e read = set" et "-e write = set"; lorsque les ensembles de lecture et d'écriture se croisent.
- Correction de la construction sur les systèmes où struct sigaction n'a pas de membre sa_restorer.
- Correction de la construction avec uclibc et musl libc.
- Portabilité:
- Linux kernel & gt; = 2.5.46 est requis. Les anciennes versions sans un support PTRACE_SETOPTIONS décent ne fonctionneront pas.
- Sur mips, linux kernel & gt; = 2.6.15 est requis. Les anciennes versions sans support PTRACE_GETREGS décent ne fonctionneront pas.
- Sur s390 et s390x, linux kernel & gt; = 2.6.27 est requis. Les anciennes versions sans un support PTRACE_GETREGSET décent ne fonctionneront pas.
Nouveautés dans la version 4.9:
- Changements de comportement:
- Désactivé le support OABI sur les systèmes ARM EABI par défaut, ajout de l'option --enable-arm-oabi pour l'activer au moment de la configuration.
- Améliorations:
- Ajout de l'option -k expérimentale pour imprimer la trace de la pile après chaque appel système.
- Ajout de l'option -w pour produire des statistiques sur la latence de syscall. (adresse le bug Debian # 457497).
- Ajout du support de l'architecture ARC.
- Ajout du support de l'API PTRACE_GETREGS sur PowerPC.
- Amélioration de la libci bionique et de la prise en charge de la librairie musl.
- Suivi amélioré des processus de personnalité x86 sur x86_64 et x32.
- Suivi amélioré des processus de personnalité ARM sur AArch64.
- Amélioration de la détection de personnalité 32/64 bits sur PowerPC.
- Implémentation du décodage des appels système add_key, ioprio_get, ioprio_set, kexec_load, keyctl, renameat2 et request_key.
- Décodage robotisé des appels système select, pselect et io_submit.
- Amélioration du décodage des appels système delete_module, fanotify_init, fanotify_mark, fcntl, setdomainname, sethostname, setns et sync_file_range.
- Décodage amélioré des masques de bits de signal.
- Amélioration du décodage des descripteurs de fichiers.
- Amélioration du décodage de siginfo_t.
- Décodage PF_NETLINK amélioré.
- Constantes CLOCK_ * mises à jour (adresse le bug Fedora # 1088455).
- Ajout de nouvelles entrées syscall pour correspondre à Linux 3.16.
- Corrections de bugs:
- Ajout de shmat et shmdt à l'ensemble des syscalls liés au mappage de mémoire.
- Correction du détachement des processus arrêtés.
- Correction du décodage fanotify_mark sur les architectures 32 bits.
- Correction du décodage de l'offset dans les appels système preadv et pwritev.
- Correction de la sélection du décodage de la glibc dans le mode _FORTIFY_SOURCE.
- Correction du décodage d'epoll_ctl syscall avec l'argument EPOLL_CTL_DEL.
- Correction de la génération et du conflit (adresse le bug Fedora # 993384).
- Corrections diverses dans la page de manuel. (Adresse le bug Debian # 725987).
Quoi de neuf dans la version 4.8:
- Changements de comportement:
- Dans le cas d'une terminaison de ligne normale, lorsque la sortie de trace est redirigée vers un canal, strace le ferme et attend la fin du processus de canal avant de quitter.
- Améliorations:
- Implémentation du suivi à l'aide de l'API PTRACE_SEIZE (si disponible).
- Implémente une détection de personnalité de processus basée sur PTRACE_GETREGSET plus fiable sur x86-64 et x32 (si disponible).
- Ajout de l'option -e trace = memory pour les appels système liés au mappage de mémoire.
- Documenté -b option.
- Les messages d'état de sortie autorisés à être supprimés en donnant deux fois l'option -q.
- Ajout du support de l'architecture AArch64 (adresse le bug # 693074 de Debian et le bug # 969858 de Fedora).
- Ajout de la prise en charge des architectures OpenRISC 1000, Meta et Xtensa.
- Ajout du support de la personnalité tilegx pour Tile.
- Prise en charge améliorée des architectures NOMMU.
- Amélioration du décodage de getdents, mmap, perf_event_open, ptrace et quotactl syscalls.
- Ajout de nouvelles entrées syscall pour correspondre à Linux 3.9.
- Régénéré la liste des noms communs d'ioctl à partir de Linux 3.9.
- Mise à jour de la liste des constantes errno.
- Listes mises à jour des constantes AF_ *, MADV_ *, MAP_ *, MSG_ *, MS_ *, PF_ *, PR_ *, PTRACE_O_ * et TCP_ *.
- Implémentation du décodage des ioctls UBI.
- Supprimé redondant & quot; * 32 & quot; Noms ioctl.
- Corrections de bugs:
- Correction de la fuite d'ERESTARTNOINTR vers l'espace utilisateur sur les anciens noyaux (adresse Fedora # 659382).
- Correction de l'analyse de la chaîne de libération du noyau (correction du bug # 702309 de Debian).
- Correction du décodage de * xattr syscalls (adresse du bug Fedora # 885233).
- Correction de la gestion des fichiers avec des numéros d'inodes 64 bits par stret 32 bits (adresse le bug Fedora # 912790).
- Correction des fourchettes de traçage sur SPARC.
- Résolution du décodage des appels système fadvise64, fallocate, ftruncate64, io_submit, pread, preadv, pwrite, pwritev, readahead, sigaltstack, sync_file_range, sysctl et truncate64.
- Correction de catégories de plusieurs appels système sur la plupart des architectures prises en charge.
- Correction du décodage des appels système syscall de reconnaissance de la personnalité 32 bits non native.
- Résolution du décodage de plusieurs syscalls de personnalité 32 bits sur x32.
- Correction du décodage des longs arguments syscall longs sur les architectures ARM, MIPS / o32, PowerPC, S390x et Tile.
- Correction du décodage semtimedop sur S390x.
- Correction du décodage sram_alloc sur Blackfin.
- Correction de la construction lorsque process_vm_readv est un stab.
- Correction de la construction avec les anciennes versions de libaio.h.
Nouveautés dans la version 4.7:
- Ceci est une version stable, avec les corrections de bogues habituelles, un support amélioré pour les nouveaux noyaux Linux, et d'autres améliorations.
Quoi de neuf dans la version 4.6:
- Ceci est une version stable, avec les corrections de bogues habituelles, un support amélioré pour les noyaux Linux récents et d'autres améliorations, y compris une nouvelle méthode de suivi des clichés système clone, fork et vfork en utilisant les fonctions explicites du noyau Linux pour tracer la création de threads et de processus fils.
Quoi de neuf dans la version 4.5.20:
- Améliorations:
- Implémentation du décodage des nouveaux syscalls linux: inotify_init1, recvmmsg.
- Implémentation du décodage de base des nouveaux appels système linux: preadv, pwritev, rt_tgsigqueueinfo, perf_event_open.
- Amélioration du décodage des syscalls récemment ajoutés sur les architectures non-x86 en remplaçant un décodeur nu par des analyseurs élaborés activés plus tôt pour x86 / x86-64.
- Implémente l'option -C pour combiner les sorties régulières et -c. (Adresse le bug Debian # 466196)
- Amélioration du décodage des appels système mbind et mremap.
- Amélioration du décodage des options de socket SOL_PACKET.
- Liste régénérée des noms ioctl de Linux 2.6.33.
- Ajout du support de l'architecture TILE.
- Corrections de bugs:
- Correction de la construction avec les en-têtes du noyau Linux 2.6.32-rc5 +. (Adresses le bogue de Debian # 560516 et le bogue de Fedora # 539044)
- Correction de la construction sur mips.
- Correction de la gestion des systèmes Linux sans struct statfs64.
- Correction du masque de signalement par sigreturn sur powerpc.
- Débordement de la pile potentielle fixe dans le décodeur sélectionné. (Adresse le bug Fedora # 556678)
- Corrigé msgsnd décodage ipccall indirect.
- Décodage corrigé des appels système 64 bits. (Adresse le bug Debian # 570603)
- Correction du décodage getsockopt sur les architectures où sizeof (long) & gt; sizeof (int). (Adresse le bug Debian # 494844)
- Décodage corrigé de epoll_pwait. (Adresse le bug Debian # 513014)
- Gestion corrigée des threads tués.
Commentaires non trouvées