編程映射檔案
MAP檔案是CCS軟體編譯後產生的有關DSP用到所有程式、數據及IO空間的一種映射檔案。
生成方法
MAP檔案主要有兩種生成方法,一種是由系統自動生成,默認檔案名稱為所建立的項目名(如XXX為項目名)加上.map後綴xxx.map,另一種在CMD檔案中指定生成MAP檔案,操作方法為在MEMORY指令前面加上“-m abc.map”,檔案名稱可以任意。
檔案格式
MAP檔案大概分為檔案頭、記憶體配置、段映射、全局符號四部分。記憶體配置與CMD檔案中的MEMORY指令關聯,在CMD檔案中定義的程式與數據區間定 義,在該部分均可以找到對應,與CMD檔案不同的時,在MAP檔案中加入了一個實際使用的區間,即在程式中實際用到的空間長度。段映射部分與CMD檔案中 的SECTION指令關聯,在該部分程式中所有的段實際映射的起始地址與實際長度均有詳細說明。可以具體到程式中PROGMA指定的段和各個單獨檔案產生 的OBJ檔案。全局符號可以是程式使用的每一個函式、程式中定義的全局變數均可以在此找到對應的起始地址。MAP檔案中採用兩種方式列舉,一種為按相應地 址排列,另一種按全局符號字母排列。
存儲地址
MAP檔案默認保存在所在項目下面,由CMD檔案產生的MAP檔案保存在該項目的DEBUG目錄下面。
當然以上解釋只是在CCS編譯器中的一種情況,在VC還有其他編譯環境中都會有MAP檔案,主要的功能就是標誌程式,數據,IO在編譯時和空間地址之間的映射關係。
調試套用
作用
畢竟有些時候IDE提示的信息不夠明白,使用MAP檔案是一個調試的好幫手。通過map檔案可以查找崩潰地址,然後就可以精確地定位到原始碼中出錯的代碼行
什麼是 MAP 檔案?簡單地講, MAP 檔案是程式的全局符號、源檔案和代碼行號信息的唯一的文本表示方法,它可以在任何地方、任何時候使用,不需要有額外的程式進行支持。而且,這是唯一能找出 程式崩潰的地方的救星。
生成
在 VC 中,我們可以按下 Alt+F7 ,打開“Project Settings”選項頁,選擇 C/C++ 選項卡,並在最下面的 Project Options 裡面輸入:/Zd ,然後要選擇 Link 選項卡,在最下面的 Project Options 裡面輸入: /mapinfo:lines 和 /map:PROJECT_NAME.map 。最後按下 F7 來編譯生成 EXE 執行檔和 MAP 檔案。
加入的參數的含義:
/Zd 表示在編譯的時候生成行信息
/map[:filename] 表示生成 MAP 檔案的路徑和檔案名稱
/mapinfo:lines 表示生成 MAP 檔案時,加入行信息
/mapinfo:exports 表示生成 MAP 檔案時,加入 exported functions (如果生成的是 DLL 檔案,這個選項就要加上)