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文件中采用两种方式列举,一种为按相应地址排列,另一种按全局符号字母排列。