GNU/Linux >> Tutoriels Linux >  >> Linux

Comment strace doit-il être utilisé?

En termes simples, strace trace tous les appels système émis par un programme avec leurs codes de retour. Pensez à des choses telles que des opérations de fichier/socket et bien d'autres plus obscures.

Il est plus utile si vous avez une certaine connaissance pratique de C car ici, les appels système représenteraient plus précisément les appels de bibliothèque C standard.

Disons que votre programme est /usr/local/bin/cough. Utilisez simplement :

strace /usr/local/bin/cough <any required argument for cough here>

ou

strace -o <out_file> /usr/local/bin/cough <any required argument for cough here>

pour écrire dans 'out_file'.

Toute la sortie de strace ira à stderr (attention, le volume de celle-ci demande souvent une redirection vers un fichier). Dans les cas les plus simples, votre programme s'arrêtera avec une erreur et vous pourrez voir où en sont ses dernières interactions avec le système d'exploitation dans la sortie strace.

Plus d'informations devraient être disponibles avec :

man strace

Présentation de Strace
strace peut être considéré comme un débogueur léger. Il permet à un programmeur/utilisateur de découvrir rapidement comment un programme interagit avec le système d'exploitation. Pour ce faire, il surveille les appels et les signaux du système.

Utilisations
Bon pour quand vous n'avez pas de code source ou que vous ne voulez pas être dérangé pour vraiment le parcourir.
Également utile pour votre propre code si vous n'avez pas envie d'ouvrir GDB, mais que vous souhaitez simplement comprendre l'interaction externe.

Une bonne petite introduction
Voici une introduction en douceur à l'utilisation de strace pour déboguer les blocages de processus :strace introduction


Linux
  1. Comment citer Ubuntu dans une thèse académique ??

  2. Comment remplacer un périphérique Btrfs défaillant

  3. Comment compiler le fichier .c avec OpenSSL inclut ?

  4. Comment tracer les opérations d'E/S par fichier sous Linux ?

  5. Comment la fonction eval peut-elle être utilisée dans le makefile ?

Comprendre les appels système sous Linux avec strace

Comment suivre l'exécution d'un programme à l'aide de la commande Linux Strace

Comment j'ai utilisé Ansible pour automatiser les mises à jour à la maison

Comment répertorier les bibliothèques partagées utilisées par les exécutables sous Linux

Comment utiliser la commande Linux Strace

Comment dois-je déterminer l'utilisation actuelle du réseau ?