GNU/Linux >> Tutoriales Linux >  >> Linux

Tutorial de comandos de Linux nm para principiantes (10 ejemplos)

Si es un usuario de Linux que también se dedica al desarrollo de software a nivel de sistema, es posible que se encuentre en situaciones en las que necesite información relacionada con los símbolos en un archivo de objeto. Te alegrará saber que existe una utilidad de línea de comandos, denominada nm - que puedes usar en estas situaciones.

En este tutorial, discutiremos los conceptos básicos de esta herramienta utilizando algunos ejemplos fáciles de entender. Pero antes de hacerlo, vale la pena mencionar que todos los ejemplos aquí se han probado en una máquina con Ubuntu 16.04 LTS.

Comando Linux nm

La utilidad de línea de comandos nm básicamente enumera los símbolos de los archivos de objetos. Esta es la sintaxis de la herramienta:

nm [OPTIONS] OBJECT-FILENAME

Y lo siguiente es cómo lo explica la página de manual del comando:

       GNU nm lists the symbols from object files objfile....  If no object
       files are listed as arguments, nm assumes the file a.out.

Los siguientes son algunos ejemplos estilo preguntas y respuestas que le darán una mejor idea de cómo funciona nm.

P1. ¿Cómo funciona el comando nm?

El uso básico de este comando es muy sencillo:todo lo que tiene que hacer es ejecutar el comando 'nm' y pasarle el nombre del archivo de objeto como entrada. Por ejemplo, utilicé el comando nm con el archivo binario 'apl':

nm apl

La siguiente captura de pantalla muestra el tipo de salida que produjo el comando anterior:

Las tres columnas producidas en la salida representan el valor del símbolo, el tipo de símbolo y el nombre del símbolo, respectivamente. Hay varios tipos de símbolos:para conocer los detalles completos, diríjase a la página de manual del comando nm.

P2. ¿Cómo hacer que los nombres de los archivos precedan a cada símbolo en la salida?

Esto lo puedes hacer usando el -A opción de línea de comando.

nm -A [obj-file]

Por ejemplo:

nm -A apl

Entonces puede ver que el nombre del archivo se agregó al comienzo de cada línea.

P3. ¿Cómo hacer que nm también muestre los símbolos del depurador?

Para hacer que nm muestre símbolos del depurador también en la salida, use -a opción de línea de comando.

nm -a [obj-filename]

Por ejemplo:

nm -a apl

El comando anterior mostrará todos los símbolos, incluidos los símbolos exclusivos del depurador que normalmente no aparecen en la lista.

P4. ¿Cómo hacer que nm decodifique nombres de símbolos de bajo nivel?

Si lo desea, puede incluso obligar a nm a decodificar nombres de símbolos de bajo nivel en nombres de nivel de usuario. Esto lo puede hacer usando la opción de línea de comando -C.

nm -C [obj-file]

Por ejemplo:

nm -C apl

Esto es lo que dice la página de manual sobre esta opción:

           Besides removing any initial underscore prepended by the system,
           this makes C++ function names readable. Different compilers have
           different mangling styles. The optional demangling style argument
           can be used to choose an appropriate demangling style for your
           compiler.

P5. ¿Cómo hacer que nm solo muestre símbolos dinámicos?

En caso de que desee que nm muestre solo símbolos dinámicos, en lugar de los símbolos normales, use -D opción de línea de comando.

nm -D [obj-file]

Por ejemplo:

nm -D apl

Entonces puede ver que nm solo produjo símbolos dinámicos en la salida.

P6. ¿Cómo usar diferentes formatos de salida nm?

Para habilitar diferentes formatos de salida, use la opción de línea de comando -f. De forma predeterminada, la salida se produce en formato bsd; sin embargo, si lo desea, también puede habilitar los formatos 'sysv' y 'posix'.

nm -f [format] [obj-filename]

Por ejemplo:

nm -f posix apl

Observe el cambio de formato ahora.

P7. ¿Cómo hacer que nm muestre solo símbolos externos?

Esto se puede lograr usando la opción de línea de comando -g.

nm -g [obj-file]

Por ejemplo:

nm -g  apl

P8. ¿Qué opciones de clasificación ofrece nm?

De forma predeterminada, los símbolos se ordenan alfabéticamente. Sin embargo, si lo desea, puede ordenarlos numéricamente por sus direcciones usando -n opción de línea de comando.

nm -n [objfile]

Por ejemplo:

nm -n apl

Entonces puede ver que la salida está ordenada por direcciones ahora.

En caso de que no desee que nm aplique ningún tipo de clasificación (incluida la que usa por defecto), use la opción de línea de comando -p. Continuando, para revertir cualquier clasificación existente, use la opción de línea de comando -r.

P9. ¿Cómo hacer que nm solo muestre símbolos indefinidos?

Esto lo puedes hacer usando el -u opción de línea de comando.

nm -u [obj-file]

Por ejemplo:

nm -u apl

P10. ¿Cómo hacer que nm solo muestre símbolos definidos?

Para hacer que nm solo muestre símbolos definidos, use --defined-only opción de línea de comando.

nm --defined-only [obj-file]

Por ejemplo:

nm --defined-only apl

Conclusión

De acuerdo, el comando nm tiene una audiencia de nicho, pero mi experiencia personal dice que incluso si no se considera parte de esa audiencia, tenga en cuenta que tal herramienta existe. Y para aquellos que quieran usar esta utilidad, una vez que terminen de practicar todos los ejemplos aquí, diríjanse a la página de manual de nm para obtener más información.


Linux
  1. Tutorial de comando cd de Linux para principiantes (8 ejemplos)

  2. Tutorial de comandos de comunicación de Linux para principiantes (5 ejemplos)

  3. Tutorial de comando Linux df para principiantes (8 ejemplos)

  4. Tutorial de comando de fecha de Linux para principiantes (8 ejemplos)

  5. Tutorial de comando de nombre de host de Linux para principiantes (5 ejemplos)

Linux who Command Tutorial para principiantes (8 ejemplos)

Tutorial de comandos Linux nl para principiantes (7 ejemplos)

Tutorial del comando Linux lscpu para principiantes (5 ejemplos)

Tutorial de comandos OD de Linux para principiantes (6 ejemplos)

Tutorial de comando Linux w para principiantes (5 ejemplos)

Tutorial de comandos ss de Linux para principiantes (8 ejemplos)