Overzicht
nm analyseert de symbooltabel in objectbestanden en geeft de naam, het type, het adres, enz. van elk symbool weer. Dit is nuttig voor het diagnosticeren van koppelingsproblemen, het controleren van bibliotheekinhoud en het analyseren van code-optimalisatie.
Belangrijkste functies
- Toon de lijst met symbolen van een objectbestand
- Identificeer symbooltypen (functie, variabele, gedefinieerd, ongedefinieerd, enz.)
- Geef informatie over symbooladressen en -groottes
- Ondersteuning voor C++ naam demangling
Belangrijkste opties
Het nm-commando biedt verschillende opties om de lijst met symbolen te filteren en de uitvoerindeling te regelen.
Symboolfiltering
Uitvoerindeling
Gegenereerde opdracht:
Probeer de opdrachtcombinaties.
Uitleg:
`nm` Voer het commando uit.
Combineer deze opties en voer de opdracht virtueel uit met de AI.
Gebruiksvoorbeelden
Bekijk verschillende manieren om symboolinformatie uit objectbestanden te controleren met het nm-commando.
Basis symboollijst bekijken
gcc -c main.c -o main.o
nm main.o
Toont alle symbolen van een gecompileerd uitvoerbaar bestand of objectbestand in het standaardformaat.
Alleen ongedefinieerde symbolen bekijken
nm -u main.o
Handig voor het diagnosticeren van koppelingsproblemen door alleen ongedefinieerde symbolen weer te geven, zoals niet-gekoppelde externe functies of variabelen.
C++ symbool demangling
g++ -c my_class.cpp -o my_class.o
nm -C my_class.o
Converteert complexe symboolnamen van C++ objectbestanden naar een leesbaar formaat.
Weergeven met symboolgrootte
nm -S main.o
Toont de grootte (in bytes) van elk symbool, samen met het adres.
Tips & Aandachtspunten
Tips en aandachtspunten voor het effectief gebruiken van het nm-commando.
Symbooltype tekens
De tekens naast elk symbool in de uitvoer van nm geven het type van het symbool aan. Hoofdletters geven globale symbolen aan, kleine letters geven lokale symbolen aan.
- A: Absoluut symbool
- B/b: Ongedefinieerde datasectie (BSS)
- D/d: Geïnitialiseerde datasectie
- T/t: Tekst (code) sectie
- U: Ongedefinieerd symbool
- W/w: Zwak symbool
Gebruik voor debugging
nm is erg nuttig voor het diagnosticeren van linkerfouten of het controleren of specifieke functies of variabelen correct zijn opgenomen in een bibliotheek. Vooral de -u optie helpt bij het oplossen van koppelingsproblemen door ongedefinieerde verwijzingen te vinden.