gcc linker g++ linker-flags

¿Para qué se usan los archivos de mapas del enlazador gcc?



linker g++ (2)

¿Cuáles son los archivos ".map" generados por la opción del vinculador gcc / g ++ "-Map" utilizada?

No existe el "enlazador gcc": GCC y el vinculador son proyectos independientes y separados.

Por lo general, el mapa se usa para comprender las decisiones que se realizan mientras se vincula el binario. Del man ld :

-M --print-map Print a link map to the standard output. A link map provides information about the link, including the following: · Where object files are mapped into memory. · How common symbols are allocated. · All archive members included in the link, with a mention of the symbol which caused the archive member to be brought in. · The values assigned to symbols. ...

Si no comprende lo que eso significa, es probable que (todavía) no tenga las preguntas que responde este resultado y, por lo tanto, no tiene necesidad de leerlo.

¿Cuáles son los archivos ".map" generados por la opción del vinculador gcc / g ++ "-Map" utilizada? ¿Y cómo leerlos?


Recomiendo generar un archivo de mapa y mantener una copia de cualquier software que ponga en producción.

Puede ser útil para descifrar informes de fallas. Dependiendo del sistema, es probable que pueda obtener un volcado de pila del bloqueo. El volcado de pila incluirá direcciones de memoria y uno de los registros incluirá el Puntero de Instrucción. Eso te dice que el código de la dirección de memoria se estaba ejecutando en. En algunos sistemas, las direcciones de código se pueden mover (al cargar bibliotecas dinámicas, por lo tanto, dinámicas), pero los bytes de orden inferior deben permanecer iguales.

El archivo de mapa es un MAP desde la ubicación de la memoria -> ubicación del código. Le da el nombre de la función en una dirección de memoria determinada. Debido a las optimizaciones, puede no ser extremadamente preciso, pero le da un lugar para comenzar en términos de buscar errores que causen el bloqueo.

Ahora, en 30 años de escribir software comercial, esta es la única cosa para la que he usado los archivos de mapas. Dos veces con éxito