Outil pour tracer les appels de bibliothèque sous Linux / ARM

8

Je recherche un outil permettant de tracer les appels aux fonctions dans les bibliothèques partagées sous Linux / ARM. Fondamentalement, je veux pouvoir spécifier une ligne de commande et laisser cet outil produire un enregistrement des fonctions de bibliothèque appelées et des arguments passés. J'imagine qu'une certaine forme de hook de fonction pourrait être utilisée pour cela.

Je connais ltrace, qui fournit exactement les fonctionnalités dont j'ai besoin. Cependant, ltracene fonctionne pas pour moi car il:

  • segfaults souvent lors du traçage de programmes plus complexes.
  • Est très lent.

Je recherche une alternative plus robuste. La vitesse est agréable, mais ce n'est pas ma principale préoccupation. Avant tout, j'aimerais avoir un moyen de retrouver les appels de bibliothèque qui peuvent analyser n'importe quel programme (non évasif).

Sysdig ne fonctionne pas non plus dans ARM, et le port de dtrace fonctionne toujours en version bêta uniquement dans NetBSD.

Quelqu'un connaît-il un tel outil dans un état utilisable?

j0ker
la source

Réponses:

1

Avez-vous regardé LTTng ? Il s'agit d'un cadre de traçage espace noyau / espace utilisateur qui fonctionne sur plusieurs architectures, y compris ARM.

Vous pouvez configurer le suivi du code de l'espace utilisateur avec LTTng-UST . Mais vous devrez recompiler les bibliothèques partagées que vous souhaitez tracer, avec vos points de trace LTTng ajoutés.

Voici un guide des documents officiels de lttng sur la configuration du traçage de l'espace utilisateur: Tracer votre propre application utilisateur

Je ne sais pas si cela serait utile dans votre cas, mais il existe également un thread Stack Overflow sur la compilation / installation de lttng sur les plates-formes embarquées (y compris ARM): Comment puis-je construire et déployer LTTng sur un système Linux embarqué?

J. Taylor
la source