A. 如何生成.MAP文件
示例代碼:
#include <iostream>
using namespace std;
void crash()
{
__asm
{
int 3;//到這里就中斷(模擬程序崩潰)
}
}
int main()
{
cout<<"hello"<<"\n";
crash();
return 0;
}
在vc6.0里敲入上面代碼,project->settings->c/c++ 在project options里加上/Zd表示編譯的時候生成行信息,然後在link選項卡里勾選Generate mapfile,在project options加上/mapinfo:lines。好了,rebuild all就可以在debug目錄下生成一個後綴名為.map的文件,可以用記事本打開它。
運行程序,彈出有「調試 發送錯誤報告 不發送」三個按鈕的對話框,查看錯誤報告技術信息,在開始的幾行里有「code flags record address「記住address後的地址,我的是0x00401156。根據它就能找出崩潰時的函數地址。可以查看map文件的 「Rva+Base」(偏移+基地址)列,其中第一個大於address的前一個call對應函數就是崩潰的函數。
B. 以map為後綴名的文件怎麼打開
有一些提供地圖編輯器的游戲就能將其對應的文件打開,比如說<英雄無敵>,<war3>,<星際爭霸>.如果一些沒提供編輯工具的直接能用打開二進制的文件打開,比如說ue什麼的.但是打開之後你是看不懂的.
C. 如何打開游戲文件裡面的以後綴為.map的文件
MAP文件是CCS軟體編譯後產生的有關DSP用到所有程序、數據及IO空間的一種映射文件。游戲中往往把一些游戲地圖保存為擴展名為map文件。map是一種圖像數據調用文件,可以模擬場景。可以使用可以用OziExplorer
3.95.4h打開這種文件,或者用專業的地圖編輯軟體打開。
生成方法:MAP文件主要有兩種生成方法,一種是由系統自動生成,默認文件名為所建立的項目名(如XXX為項目名)加上.map後綴xxx.map,另一種在CMD文件中指定生成MAP文件,操作方法為在MEMORY指令前面加上「-m
abc.map」,文件名可以任意。
文件格式:MAP文件大概分為文件頭、內存配置、段映射、全局符號四部分。內存配置與CMD文件中的MEMORY指令關聯,在CMD文件中定義的程序與數據區間定義,在該部分均可以找到對應,與CMD文件不同的時,在MAP文件中加入了一個實際使用的區間,即在程序中實際用到的空間長度。段映射部分與CMD文件中的SECTION指令關聯,在該部分程序中所有的段實際映射的起始地址與實際長度均有詳細說明。可以具體到程序中PROGMA指定的段和各個單獨文件產生的OBJ文件。全局符號可以是程序使用的每一個函數、程序中定義的全局變數均可以在此找到對應的起始地址。MAP文件中採用兩種方式列舉,一種為按相應地址排列,另一種按全局符號字母排列。