通过崩溃地址 MAP文件 找错误行数之Delphi版
来源:互联网 发布:vb 和校验 编辑:程序博客网 时间:2024/04/29 22:29
以前看了 通过崩溃地址找错误行数之VC版 那时候还没用DELPHI
昨晚刚好又看到了 所以就试了一下DELPHI的,与大家共享 ^_^
什么是 MAP 文件?简单地讲, MAP 文件是程序的全局符号、源文件和代码行号信息的唯一的文本表示方法,它可以在任何地方、任何时候使用,不需要有额外的程序进行支持。而且,这是唯一能找出程序崩溃的地方的救星。
DELPHI下生成MAP文件的方法:偶只知道下面两种,如果谁知道其他的方法 敬请告知 多谢
生成详细的MAP信息的方法
1. project -> options -> Linker -> Map file 选择detailed.
2. D:/Fred/Code/DELPHI/MyPas/ErrLineByAddr2> dcc32 -GD project1.dpr
我们的代码为:
unit Unit1;
//{$D+,L+}
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;
type
TForm1 = class(TForm)
Button1: TButton;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.Button1Click(Sender: TObject);
var
I, J: Integer;
p: PChar;
begin
I := 10;
J := 0;
//I := I div J; // 32
//ShowMessage(IntToStr(I));
p := nil;
p^ := 'A '; // 38
end;
end.
// 想必大家看到了 会有返回0地址错误....我们这里就是要让它崩溃,让我让你崩溃 ^_^
然后执行 点击 然后出错 我的机器上 崩溃地址为0044d946
如果要查找代码行号,需要使用下面的公式做一些十六进制的减法运算:
崩溃行偏移 = 崩溃地址(Crash Address) - 基地址(ImageBase Address) - 0x1000
减去后得到 0004c946 然后查找 0004c946
0044d946 - 00400000 = 0004d946 - 00001000 = 0004c946 <= 后面列出的
0004C946 就是它了 我们用ultraedit32之类的工具打开 .map文件 搜索 0004C94,找到了,然后就找
<= 0004c946的那个地址 然后看到了
Line numbers for Unit1(Unit1.pas) segment .text
37 0001:0004C944 38 0001:0004C946 39 0001:0004C949 41 0001:0004C97C
41 0001:0004C983
o yeah.. <星际里面注射兴奋剂的声音 ^_^> .. 38 0001:0004C946 就是它了。。。unit1.pas的第38行!!去代码里看一下 果然就是38行 ^_^.....
共享ing...如果有不妥之处 敬请之处 多谢....
- 通过崩溃地址 MAP文件 找错误行数之Delphi版
- 通过崩溃地址找错误行数之Delphi版(转载)
- 通过崩溃地址找错误行数之Delphi版
- 通过崩溃地址找错误行数之Delphi版
- 通过崩溃地址找错误行数之Delphi版
- 通过崩溃地址找错误行数之Delphi版
- 通过崩溃地址找错误行数之Delphi版
- [转]通过崩溃地址找错误行数之Delphi版
- 通过崩溃地址找错误行数之Delphi版
- 通过符号文件来找崩溃地址
- 通过崩溃地址使用map文件来定位
- Delphi之通过崩溃地址找出源代码的出错行
- Delphi之通过崩溃地址找出源代码的出错行
- MAP文件和调试(VC)(从崩溃地址找出错源码位置)
- MAP文件和调试(VC)(从崩溃地址找出错源码位置)
- [Delphi]使用MAP文件查找程序地址类错误行
- [Delphi]使用MAP文件查找程序地址类错误行
- Delphi之通过报错地址或崩溃地址找出源代码的出错行
- Word2010--Cannot find the Word template:WordToRqm.dot的解决方法
- 图像去噪——None Local Means Filter
- 三种嵌入式操作系统的简介
- 需要考虑的几个小逻辑问题(做学生管理系统)
- 80后的一代
- 通过崩溃地址 MAP文件 找错误行数之Delphi版
- 80后的一代
- jquery.autocomplete 自动完成功能
- c#合并多个图片
- [经典]跨浏览器兼容测试8大利器
- Linux as5安装及软raid设置教程
- c#中生成随机密码
- 数据库范式
- ASP—Request