Mi herramienta de construcción gcc produce un archivo .map. ¿Cómo visualizo el mapa de memoria gráficamente?¿Cómo podría visualizar gráficamente el diseño de la memoria desde un archivo .map?
Respuesta
Aquí está el comienzo de un script en Python. Carga el archivo de mapa en una lista de Secciones y Símbolos (la primera mitad). Luego renderiza el mapa usando HTML (o hace lo que quieras con las listas sections
y symbols
).
Puede controlar la secuencia de comandos mediante la modificación de estas líneas:
with open('t.map') as f:
colors = ['9C9F84', 'A97D5D', 'F7DCB4', '5C755E']
total_height = 32.0
map2html.py
from __future__ import with_statement
import re
class Section:
def __init__(self, address, size, segment, section):
self.address = address
self.size = size
self.segment = segment
self.section = section
def __str__(self):
return self.section+""
class Symbol:
def __init__(self, address, size, file, name):
self.address = address
self.size = size
self.file = file
self.name = name
def __str__(self):
return self.name
#===============================
# Load the Sections and Symbols
#
sections = []
symbols = []
with open('t.map') as f:
in_sections = True
for line in f:
m = re.search('^([0-9A-Fx]+)\s+([0-9A-Fx]+)\s+((\[[ 0-9]+\])|\w+)\s+(.*?)\s*$', line)
if m:
if in_sections:
sections.append(Section(eval(m.group(1)), eval(m.group(2)), m.group(3), m.group(5)))
else:
symbols.append(Symbol(eval(m.group(1)), eval(m.group(2)), m.group(3), m.group(5)))
else:
if len(sections) > 0:
in_sections = False
#===============================
# Gererate the HTML File
#
colors = ['9C9F84', 'A97D5D', 'F7DCB4', '5C755E']
total_height = 32.0
segments = set()
for s in sections: segments.add(s.segment)
segment_colors = dict()
i = 0
for s in segments:
segment_colors[s] = colors[i % len(colors)]
i += 1
total_size = 0
for s in symbols:
total_size += s.size
sections.sort(lambda a,b: a.address - b.address)
symbols.sort(lambda a,b: a.address - b.address)
def section_from_address(addr):
for s in sections:
if addr >= s.address and addr < (s.address + s.size):
return s
return None
print "<html><head>"
print " <style>a { color: black; text-decoration: none; font-family:monospace }</style>"
print "<body>"
print "<table cellspacing='1px'>"
for sym in symbols:
section = section_from_address(sym.address)
height = (total_height/total_size) * sym.size
font_size = 1.0 if height > 1.0 else height
print "<tr style='background-color:#%s;height:%gem;line-height:%gem;font-size:%gem'><td style='overflow:hidden'>" % \
(segment_colors[section.segment], height, height, font_size)
print "<a href='#%s'>%s</a>" % (sym.name, sym.name)
print "</td></tr>"
print "</table>"
print "</body></html>"
Y aquí es una mala prestación del HTML que da salida:
Eso es genial Frank. – JeffV
Gracias. Se puede hacer más preciso teniendo en cuenta la brecha de 1 píxel. Además, le gustaría hacer enlaces en este "mapa" a algún tipo de sección clave/diccionario en la página. Pero sí, esto podría ser útil. –
¿Lo escribiste? Si es así, ¿escribió este guión para responder esta pregunta? o lo escribiste para tu uso regular? – claws
He escrito un programa C# para mostrar la información en un archivo de Mapa al ong con información que normalmente no está presente en el archivo del mapa (como símbolos estáticos siempre que pueda usar binutils
). El código está disponible here. En resumen, analiza el archivo del mapa y también usa BINUTILS
(si está disponible) para recopilar más información. Para ejecutarlo necesita descargar el código y ejecutar el proyecto en Visual Studio, busque la ruta del archivo de mapa y haga clic en Analyze
.
Nota: Sólo funciona para GCC/LD
mapa archivos
Captura de pantalla: [
El solo hecho de vincular sus propias cosas es [no es una buena respuesta] (// stackoverflow.com/help/promotion). Una buena respuesta que involucra un recurso externo incluye las partes esenciales de la respuesta aquí para futuros usuarios, y hace referencia a lo siguiente: _ ¿De qué es esto de lo que estás hablando? ¿Dónde lo instalo? ¿Como lo instalo? ¿Cómo uso esto para resolver el ** problema exacto ** que tengo en mi pregunta? ¿Está afiliado a esta cosa de alguna forma o forma? _ Consulte: [¿Cómo puedo vincular a un recurso externo de una manera amigable con la comunidad?] (// meta.stackexchange.com/questions/94022) – Mogsdad
Aceptar He hecho algunas edicionesMás allá de esto, no veo nada más que pueda agregar. * ¿De qué es esto de lo que estás hablando? * - Evidente: es un analizador/visor de archivos de mapas. * ¿Dónde/Cómo lo instalo? * - Windows, ejecute el proyecto usando Visual Studio * ¿Cómo uso esto para resolver el problema exacto que tengo en mi pregunta? * - Cargue el archivo del mapa, ejecute el software * ¿Está afiliado? con esto de alguna manera, forma o forma? * - Err, sí, lo escribí. – Sredni
¿Esto también funcionará con 'mono'? – user1273684
- 1. ¿Qué recomienda utilizar para visualizar gráficamente un WSDL?
- 2. ¿Cómo visualizar un mapa desde un archivo netcdf?
- 3. Rails dudas de diseño: ¿Debería/podría cargar todo el diccionario/tabla en la memoria?
- 4. jQuery: inconsistencia de diseño entre $ .map() & .map()?
- 5. Cómo visualizar un gen_fsm de Erlang
- 6. ¿Cómo puedo visualizar mi diseño de desplazamiento sobre el teclado?
- 7. Visualizar UIImage desde la cámara en UIWebView
- 8. ¿Podría un objeto desasignar su memoria?
- 9. ¿Cómo fuerzo mi std :: map para desasignar la memoria utilizada?
- 10. Python Imaging: carga el archivo JPEG desde la memoria
- 11. C++ herramienta para visualizar la alineación de la memoria?
- 12. ¿Cuánta memoria podría utilizar vm
- 13. cómo ver gráficamente las dependencias en el archivo de contexto de la aplicación de primavera
- 14. ¿Cómo podría Qt aplicar el estilo desde un archivo Qt Stylesheet externo?
- 15. Diseño de memoria de un conjunto
- 16. Consejos sobre cómo ser gráficamente creativo
- 17. Cómo visualizar un día de la fecha
- 18. ¿Cómo visualizar o formatear un archivo de diff/patch?
- 19. ¿Cómo abrir un archivo en la memoria?
- 20. diseño de memoria de la clase heredada
- 21. ¿Cómo obtener el xpath de un nodo determinado al visualizar un archivo xml en Visual Studio?
- 22. ¿Cómo analizar un archivo de volcado desde un archivo DLL de Delphi?
- 23. Themathic map/choropleth map of the Netherlands
- 24. ¿Cómo puedo definir el diseño de un fragmento desde XML?
- 25. ¿Cómo paso una variable a la plantilla de Grails desde un archivo de diseño?
- 26. Cómo configurar el diseño desde el controlador
- 27. ¿Cómo analizar el uso de memoria desde un volcado de memoria?
- 28. Problemas para leer desde el archivo de memoria asignado
- 29. ¿Cómo podría ordenar el comando de clasificación UNIX un archivo muy grande?
- 30. Excepción al cargar el diseño: java.util.LinkedHashMap.eldest() Ljava/util/Map $ Entry;
Estoy muy interesado en esta cuestión. Esperaba que obtuvieras algunas buenas respuestas. Pero tal vez a todos me guste solo subir tu pregunta y esperar :) Estén atentos ... Cheers - Prakash – prakash
Dada una lista de tuplas (dirección, tipo de símbolo, nombre de símbolo) de un archivo de mapa, no es inmediatamente obvio qué tipos de gráficos podrían ser construido. ¿Podría revisar la pregunta para explicar lo que le gustaría visualizar? –
intente este: http://www.absint.com/stackanalyzer/ no uso GCC así que realmente no puedo responder, pero pensé que el enlace podría ser lo que busca. – Mauro