一 什么是MAP文件       什么是 MAP 文件?简单地讲, MAP 文件是程序的全局符号.源文件和代码行号信息的唯一的文本表示方法,它可以在任何地方.任何时候使用,不需要有额外的程序进行支持.而且,这是唯一能找出程序崩溃的地方的救星.       如果要查找代码行号,需要使用下面的公式做一些十六进制的减法运算:       崩溃行偏移 = 崩溃地址(Crash Address) - 基地址(ImageBase Address) - 0x1000       为什么要这样做呢?我们得到的…
一 什么是MAP文件 什么是 MAP 文件?简单地讲, MAP 文件是程序的全局符号.源文件和代码行号信息的唯一的文本表示方法,它可以在任何地方.任何时候使用,不需要有额外的程序进行支持.而且,这是唯一能找出程序崩溃的地方的救星. 如果要查找代码行号,需要使用下面的公式做一些十六进制的减法运算: 崩溃行偏移 = 崩溃地址(Crash Address) - 基地址(ImageBase Address) - 0x1000 为什么要这样做呢?我们得到的崩溃地址都是由 偏移地址+ 基地址得来的,所以在计…
VS 2005使用map文件查找程序崩溃原因 一般程序崩溃可以通过debug,找到程序在那一行代码崩溃了,最近编一个多线程的程序,都不知道在那发生错误,多线程并发,又不好单行调试,终于找到一个比较好的方法来找原因,通过生成map文件,由于2005取消map文件生成行号信息(vc6.0下是可以生成行号信息的,不知道microsoft怎么想的,在2005上取消了),只能定位在那个函数发生崩溃.这里可以通过生成cod文件,即机器码这一文件,具体定位在那一行崩溃. 首先配置vc2005生成map文件和c…
使用MAP文件快速定位程序崩溃代码行 =========================================================== 作者: lzmfeng(http://lzmfeng.itpub.net)发表于:2006.04.19 17:16分类: 摆脱程序 出处:http://lzmfeng.itpub.net/post/15253/70530-------------------------------------------------------------…
简介 编写整洁的应用程序是一回事.但是当用户告诉你你的软件已经崩溃时,你知道在添加其他功能之前最好先解决这个问题.如果你够幸运的话,用户会有一个崩溃地址.这将大大有助于解决这个问题.但是你怎么能用这个崩溃地址来判断出了什么问题呢? 创建Map文件 首先,你需要一个Map文件.如果没有,使用崩溃地址几乎不可能找到应用程序崩溃的位置.首先,我将向您展示如何创建一个好的Map文件.为此,我将创建一个新项目(MAPFILE).你也可以这样做,或者调整你自己的项目.我在VC++ 6.0中使用Win32应用…
Linux 系统中,ELF动态链接文件被称为 动态共享对象(DSO,Dynamic Shared Object),简称共享对象 文件拓展名为".so" 动态链接下 一个程序可以被分成若干个文件:程序的主要部分 - 可执行文件 和 程序所依赖的共享对象(一个或多个.so文件),它们都可称作为程序的模块. 动态链接文件(共享对象)的装载地址为0x00000000:这并非工作时的实际地址,实际地址由装载器根据当前进程地址空间的空闲情况来动态分配一块足够大的虚拟地址空间给共享对象. 装载时重定…
一,配置vs 二,程序崩溃界面 // ConsoleApplication1.cpp : 此文件包含 "main" 函数.程序执行将在此处开始并结束. // #include <iostream> void fun(bool flag) { if (flag) { printf("hello world\n"); } else { printf("sorry.\n"); } , b = ; int c = b / a; } int m…
void Application_Error(object sender, EventArgs e) { // 在出现未处理的错误时运行的代码 Exception objErr = Server.GetLastError().GetBaseException(); //获取错误 string err = "Error Caught in Application_Error event\n" + "Error in:" + Request.Url.ToString()…
1. 首先需要设置程序生成 map 文件.Project -> Options -> Linker -> Map file , Detailed 2. 计算公式Edit2.Text := IntToHex(StrToInt('$'+ Edit1.Text) - StrToInt('$00400000') - StrToInt('$00001000'), 8) ;将看到的地址错误,输入到 Edit1 中. 3. 从 Map 文件中查这个地址.一般直接查是找不到的.根据获得的 Edit2 中…
这点是与C语言不一样的地方,以前我一直都没有明白这一点,所以总是不明白:函数地址再取地址算怎么回事? ---------------------------------------------------------------------------------------------------------------- 在学习Delphi的时候,一个很好的建议是和C/C++去类比着学习,从指针,到内存管理,到数组,到面向对象……各个方面,都是有很多可以相似和或者也有不同的方,类比着学习,一…