Maison >développement back-end >C++ >Comment puis-je récupérer et démanteler les informations sur les symboles d'une bibliothèque partagée (fichier .so) ?

Comment puis-je récupérer et démanteler les informations sur les symboles d'une bibliothèque partagée (fichier .so) ?

Patricia Arquette
Patricia Arquetteoriginal
2024-12-19 12:22:13287parcourir

How Can I Retrieve and Demangle Symbol Information from a Shared Library (.so file)?

Récupération des informations sur les symboles d'une bibliothèque partagée

Lorsque vous travaillez avec des bibliothèques partagées (fichiers .so), il devient souvent nécessaire d'examiner leurs symboles pour mieux comprendre leur structure et leur interdépendance. Ce guide explorera diverses méthodes pour répertorier les symboles dans un fichier .so, y compris des techniques permettant d'identifier leur origine et leurs dépendances.

Commande nm

L'utilitaire nm est un outil courant outil pour lister les symboles dans les fichiers exécutables et de bibliothèque. Il fournit des informations détaillées sur les noms, adresses et caractéristiques des symboles. Pour répertorier les symboles dans un fichier .so à l'aide de nm :

nm -gD yourLib.so

L'option -gD demande à nm d'afficher les noms de symboles et les informations de débogage GNU associées.

Démangulation des symboles C

Dans le cas des bibliothèques C, les symboles sont souvent modifiés à des fins d'optimisation. Pour démêler ces symboles et les rendre plus lisibles, utilisez l'option -C :

nm -gDC yourLib.so

Bibliothèques partagées au format ELF

Si le fichier .so est au format ELF , deux outils alternatifs peuvent être utilisé :

objdump

Objdump fournit des informations complètes sur les fichiers ELF, y compris une liste de symboles :

$ objdump -TC libz.so

L'option -C démêle C symboles, amélioration lisibilité.

readelf

Readelf propose une analyse riche en fonctionnalités des fichiers ELF, y compris des informations sur les symboles :

$ readelf -Ws libz.so

L'option -Ws affiche une table de symboles détaillée.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn