Inicio > Entorno y utilidades > nm

nm: Ver lista de símbolos de archivos objeto

El comando nm muestra una lista de símbolos (funciones, variables, etc.) de archivos objeto compilados, bibliotecas estáticas o bibliotecas compartidas. Esto ayuda a comprender la estructura del programa y a utilizarlo para la depuración.

Descripción general

nm analiza la tabla de símbolos dentro de los archivos objeto y muestra el nombre, tipo, dirección, etc., de cada símbolo. Esto es útil para diagnosticar problemas de enlace, verificar el contenido de las bibliotecas y analizar la optimización del código.

Funciones principales

  • Muestra la lista de símbolos de archivos objeto
  • Identifica el tipo de símbolo (función, variable, definido, no definido, etc.)
  • Proporciona información de dirección y tamaño del símbolo
  • Soporta el demangling de nombres C++

Opciones principales

El comando nm ofrece varias opciones para filtrar la lista de símbolos y controlar el formato de salida.

Filtrado de símbolos

Formato de salida

Comando generado:

Combina los comandos.

Descripción:

`nm` Ejecutando el comando.

Combina las opciones anteriores para ejecutar virtualmente los comandos junto con la IA.

Ejemplos de uso

Explore varias formas de verificar la información de símbolos de archivos objeto utilizando el comando nm.

Ver lista básica de símbolos

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

Muestra todos los símbolos de un archivo ejecutable o de objeto compilado en formato básico.

Ver solo símbolos no definidos

nm -u main.o

Útil para diagnosticar problemas de enlace al mostrar solo símbolos no definidos, como funciones o variables externas no enlazadas.

Demangling de símbolos C++

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

Convierte nombres de símbolos C++ complejos a un formato legible por humanos.

Mostrar con tamaño de símbolo

nm -S main.o

Muestra el tamaño (en bytes) que ocupa cada símbolo junto con su dirección.

Consejos y precauciones

Consejos y puntos a tener en cuenta para utilizar el comando nm de manera efectiva.

Caracteres de tipo de símbolo

Los caracteres que aparecen junto a cada símbolo en la salida de nm indican el tipo de símbolo. Las letras mayúsculas indican símbolos globales, y las minúsculas indican símbolos locales.

  • A: Símbolo absoluto (Absolute)
  • B/b: Sección de datos no inicializados (BSS)
  • D/d: Sección de datos inicializados
  • T/t: Sección de texto (código)
  • U: Símbolo no definido (Undefined)
  • W/w: Símbolo débil (Weak)

Uso en depuración

nm es muy útil para diagnosticar errores del enlazador o para verificar si una función o variable específica está incluida correctamente en una biblioteca. La opción -u, en particular, ayuda a encontrar referencias no definidas y a resolver problemas de enlace.


Comandos de la misma categoría