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.