accueil > Environnement & utilitaires > nm

nm : Lister les symboles des fichiers objets

La commande nm affiche la liste des symboles (fonctions, variables, etc.) dans les fichiers objets compilés, les bibliothèques statiques ou les bibliothèques partagées. Cela permet de comprendre la structure du programme et de l'utiliser pour le débogage.

Aperçu

nm analyse la table des symboles dans les fichiers objets et affiche le nom, le type, l'adresse de chaque symbole, etc. Il est utile pour diagnostiquer les problèmes de liaison, vérifier le contenu des bibliothèques et analyser l'optimisation du code.

Fonctionnalités principales

  • Afficher la liste des symboles d'un fichier objet
  • Identifier le type de symbole (fonction, variable, défini, indéfini, etc.)
  • Fournir des informations sur l'adresse et la taille des symboles
  • Support du démanling des noms C++

Options principales

La commande nm offre diverses options pour filtrer la liste des symboles et contrôler le format de sortie.

Filtrage des symboles

Format de sortie

Commande générée :

Essayez de combiner les commandes.

Description:

`nm` Exécute la commande.

Essayez d'exécuter virtuellement les commandes avec l'IA en combinant les options ci-dessus.

Exemples d'utilisation

Découvrez différentes manières de vérifier les informations de symboles des fichiers objets à l'aide de la commande nm.

Afficher la liste des symboles de base

gcc -c main.c -o main.o
nm main.o

Affiche tous les symboles d'un fichier exécutable ou objet compilé dans un format de base.

Afficher uniquement les symboles indéfinis

nm -u main.o

Utile pour diagnostiquer les problèmes de liaison en affichant uniquement les symboles indéfinis, tels que les fonctions ou variables externes non liées.

Démangling des symboles C++

g++ -c my_class.cpp -o my_class.o
nm -C my_class.o

Convertit les noms de symboles complexes des fichiers objets C++ en un format lisible par l'homme.

Afficher avec la taille des symboles

nm -S main.o

Affiche la taille (en octets) occupée par chaque symbole, ainsi que son adresse.

Conseils et précautions

Conseils et points à considérer pour utiliser efficacement la commande nm.

Caractères de type de symbole

Les caractères affichés à côté de chaque symbole dans la sortie de nm indiquent le type du symbole. Les majuscules indiquent les symboles globaux, les minuscules indiquent les symboles locaux.

  • A : Symbole absolu (Absolute)
  • B/b : Section de données non initialisées (BSS)
  • D/d : Section de données initialisées
  • T/t : Section de texte (code)
  • U : Symbole indéfini (Undefined)
  • W/w : Symbole faible (Weak)

Utilisation pour le débogage

nm est très utile pour diagnostiquer les erreurs de l'éditeur de liens ou pour vérifier si une fonction ou une variable spécifique est correctement incluse dans une bibliothèque. L'option -u en particulier aide à résoudre les problèmes de liaison en trouvant les références indéfinies.


Commandes de la même catégorie