我的gcc構建工具鏈生成一個.map文件。如何以圖形方式顯示內存映射?如何以圖形方式顯示.map文件中的內存佈局?
57
A
回答
23
這是Python中腳本的開始。它將地圖文件加載到剖面和符號列表(上半部分)中。然後它使用HTML呈現地圖(或者通過sections
和symbols
列表進行任何你想做的事情)。
您可以通過修改這些線控制腳本:
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>"
而這裏的HTML的差呈現它輸出:
4
我已經寫了一個C#程序來在地圖文件al中顯示信息與通常不存在於地圖文件中的信息(如提供的靜態符號一起提供,您可以使用binutils
)。該代碼可用here。簡而言之,它解析映射文件,並使用BINUTILS
(如果可用)收集更多信息。要運行它,您需要下載代碼並在Visual Studio下運行該項目,瀏覽至地圖文件路徑並單擊Analyze
。
注:僅適用於GCC/LD
地圖文件
截圖: [
相關問題
- 1. 如何在Eclipse中以圖形方式顯示佈局?
- 2. Eclipse中不顯示圖形內容和佈局刪除文件
- 3. 如何以圖形方式顯示XML?
- 4. 佈局不顯示如圖形佈局所示?
- 5. 如何以與接收到的佈局/格式完全相同的方式顯示XML文件的內容?
- 6. 圖形佈局不顯示文字寫入xml文件
- 7. android.gesture.GestureOverlayView不顯示上的圖形佈局
- 8. 如何以不同樹形佈局的形式顯示JSON數據?
- 9. Eclipse未顯示Android XML文件的圖形佈局
- 10. 如何在第一次繪製時以編程方式顯示佈局佈局?
- 11. Eclipse ADT插件圖形佈局:如何顯示網格線
- 12. RelativeLayout在設備和圖形佈局之間以不同方式顯示
- 13. 在響應式佈局中顯示網格中的方形圖像
- 14. Android:如何在eclipse的「圖形佈局」中顯示非英文文本
- 15. 如何看一個XML文件的圖形佈局內/ RES /佈局的文件夾中?
- 16. 如何在Java中以圖形方式顯示數據?
- 17. 如何在android中以圖形方式顯示數量
- 18. 液體形式的佈局,顯示:內聯塊
- 19. 以圖形方式佈局滾動視圖(頁面視圖)
- 20. 以圖形佈局顯示卡片視圖
- 21. 以編程方式顯示窗體和用戶控件佈局
- 22. Eclipse - 在Android視圖的圖形佈局中顯示佈局指南(線條)
- 23. 的iOS coredata圖形模型佈局,顯示Ø對方
- 24. Dijit佈局:如何顯示ContentPanes內聯?
- 25. 如何在Google Map上以圖形方式映射JSON數據?
- 26. 如何佈局形式
- 27. 如何在iPad中以圖像的形式顯示圖像?
- 28. 如何以線性佈局以編程方式定位視圖/佈局
- 29. 如何以幻燈片形式顯示選定文件夾中的圖像
- 30. 如何讓macvim標籤以圖形方式顯示?
我對這個問題很感興趣。希望你會得到一些不錯的答案。但是,也許每個人都喜歡我,只是提出你的問題並等待:)敬請關注 - Prakash – prakash 2008-09-09 12:13:28
如果給出了地圖文件中的(地址,符號類型,符號名稱)元組列表,那麼不清楚哪些類型的圖可能是建。你能否修改這個問題來解釋你想要展示的內容? – 2008-09-09 13:47:11
試試這個:http://www.absint.com/stackanalyzer/我不使用GCC所以我真的不能回答,但認爲鏈接可能是你以後的。 – Mauro 2008-09-10 12:28:51