"El objdump es una utilidad de línea de comandos utilizada para mostrar información sobre un objeto en sistemas de tipo UNIX. El comando, cuando se usa, obtiene la información de un archivo de objeto incluso cuando no tiene su código fuente. Por lo tanto, puede ser una herramienta de depuración para archivos de objetos, especialmente cuando se trabaja con programas de compiladores."
Esta guía cubre los diferentes usos del comando objdump con ejemplos. Échale un vistazo.
Usos del comando objdump
El objdump tiene 6 propósitos principales:
Su sintaxis básica es:
$ objdump
Hay muchas opciones para usar con el comando objdump, y puede ver la página de ayuda para verlas.
$ objdump --help
Este artículo utilizará /bin /echo como nuestro archivo de objeto para nuestros ejemplos. Sin embargo, puede usar otros archivos de objetos como programas C. El uso sigue siendo el mismo.
Trabajando con objdump
Mostrar encabezados de archivo del archivo de objeto
La opción -f, cuando se usa con el comando objdump, recupera todos los encabezados del archivo asociados con un archivo de objeto dado, como se muestra a continuación. Recuerde, estamos utilizando /bin /eco, que es un archivo ejecutable binario para el comando echo como nuestro objeto en este caso.
$ objdump -f /bin /eco
La salida resultante que muestra los encabezados del archivo será:
Puede notar el formato y los encabezados del archivo de objeto desde la salida.
Para obtener los encabezados de archivo específicos del objeto
Si necesita mostrar encabezados de archivo específicos para el archivo de objeto que está utilizando, use la opción -p.
$ objdump -p /bin /eco
Contenido del encabezado de la sección de visualización
Cada archivo tiene diferentes encabezados de sección. Si necesita mostrar el contenido de cada uno de los encabezados de sección, use la opción -h.
$ objdump -h /bin /eco
En este caso, la salida fue:
Desde la salida, puede notar que los diferentes encabezados de sección están numerados a partir de 1, y cada encabezado de sección tiene su tamaño, VMA, LMA, archivo y Algn.
Tamaño: representa el tamaño de la sección cargada.
VMA: representa la dirección de memoria virtual
LMA: representa la dirección de memoria lógica
Limar: representa el desplazamiento de la sección desde el inicio del archivo.
Algn: representa la alineación de la sección.
Los otros detalles, como asign, datos, lectura y contenido, son las diferentes banderas que representan si la sección está lectura o está cargada.
Mostrar información de todos los encabezados
También puede obtener toda la información sobre los encabezados en el archivo de objeto. Para hacer esto, use la opción -x.
$ objdump -x /bin /eco
En este ejemplo, la salida parcial para el comando anterior será:
Para obtener el contenido del ensamblador de la sección ejecutable
Para obtener el contenido del ensamblador de la sección ejecutable, use la opción -d.
$ objdump -d /bin /eco
En este ejemplo, la salida parcial es:
La salida se divide en secciones ejecutables, y para cada una, su contenido de ensamblador se muestra como se muestra. Por ejemplo, puede ver la sección ".init ”y su contenido de ensamblador correspondiente debajo de él antes de continuar a la siguiente sección ejecutable del archivo de objeto.
Obtenga contenido de ensamblador de cada sección
El -d muestra el contenido del ensamblador de solo las secciones ejecutables. Sin embargo, use la opción si necesita el contenido para todas las secciones de archivo.
$ objdump -d /bin /eco
Para obtener todo el contenido de todas las secciones
Para esto, use la opción -s
$ objdump -s /bin /eco
La salida para todas las secciones y su contenido será:
Mostrar información de depuración
La opción -g muestra toda la información de depuración disponible del archivo de objeto.
$ objdump -g /bin /eco
Mostrar contenido de la tabla de símbolos
Si el archivo de objeto tiene una tabla de símbolos, puede mostrar su contenido usando la opción -t
$ objdump -t /bin /eco
Conclusión
Un comando objdump es una herramienta útil para programadores que tratan con los compiladores. El comando tiene múltiples usos, y hemos cubierto el uso de ejemplo más común. También puede consultar su página Man para obtener más detalles sobre cómo puede usar la herramienta. Además, el comando puede ser un poco abrumador. Entonces, sigue practicándolo más. Mis mejores deseos!