通过崩溃地址找错误行数之Delphi版
通过崩溃地址找错误行数之Delphi版
2009-5-11 17:42:35 来源: 转载 作者:网络 访问:360 次 被顶:2 次 字号:【大 中 小】
核心提示:什么是 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
38 0001:0004C946 就是它了。。。unit1.pas的第38行!!去代码里看一下 果然就是38行
通过崩溃地址找错误行数之Delphi版相关推荐
- 仅通过崩溃地址找出源代码的出错行
仅通过崩溃地址找出源代码的出错行 作者:老罗 http://www.vckbase.com/document/viewdoc/?id=908 提交者:eastvc 发布日期:2003-10-23 9: ...
- MAP文件和调试(VC)(从崩溃地址找出错源码位置)
也是:一直听说,从未动手. 所以,用VC生成一下MAP文件,帮助调试. 一.步骤: Project Settings-> C/C++-> Project Options: 这里输入 /Zd ...
- linux addr2line,定位so文件崩溃代码行数
当我们使用别人的ndk时,可能别人的so文件会崩溃,这个时候需要定位该so文件崩溃的代码的行数,即哪一行.方法如下: 1.找到ndk下面的该目录:D:\IT\AndroidStudio\SDK\ndk ...
- 【VBA研究】用VBA取得EXCEL任意列有效行数
作者:iamlaosong 用VBA对Excel文件进行处理的时候,关键字段的列号编程时往往是不知道的,需要通过参数设定才能知道,因此,我们编程的时候,就不能用这样的语句取有效行数: lineno = ...
- cxgrid限定行数
cxGrid1BandedTableView 是可以控制行数的,只有cxGrid1DBTableView 是通过数据集控制的. 通过如下代码设置行数: Delphi/Pascal code? cx.d ...
- Android日志打印类LogUtils,能够定位到类名,方法名以及出现错误的行数并保存日志文件...
关注finddreams,一起分享,一起进步!http://blog.csdn.net/finddreams/article/details/45569089 在开发中,我们常常用打印log的方 ...
- 使用COUNT(*)统计指定表行数时报错:将 expression 转换为数据类型 int 时出现算术溢出错误
报错信息: [22003] [Microsoft][ODBC Driver 17 for SQL Server][SQL Server]将 expression 转换为数据类型 int 时出现算术溢出 ...
- 从libc-2.27.so[7fd68b298000+1e7000]崩溃回溯程序段错误segfault
近期在外场试验过程中出现了一次进程退出的问题(在西安地面测试中也出现过一次),但是因为该问题不复现,后面就一直记着但没有进行闭环,也不清楚是异常退出还是因为资源消耗问题被系统杀死.这次回来之后有必要进 ...
- 从libc-2.27.so[7ff3735fd000+1e7000]崩溃回溯程序段错误segfault
简介 最近的应用程序遇到了点问题,它总是在退出的时候段错误崩溃. 段错误大家应该不陌生了,内存使用不当导致段错误. 通过尝试gdb core文件,dmesg,objdump库文件等方法终于定位到了崩溃 ...
最新文章
- Java数据库篇4——表的约束
- 达梦工作笔记-使用达梦客户端创建用户并授予权限
- Linux目录功能及文件类型,linux目录作用详解(超详细,树状排版)
- CSS两栏布局之左栏布局
- 8183微型计算机,佳木斯大学12年微机原理复习题..doc
- c# 如何调用非托管函数 (转)
- 朝鲜国家黑客被指利用 LinkedIn 攻击欧洲航空公司和军队企业
- linux大一实验报告,linux实验报告
- 人工智能的常用十种算法
- VC++调用大漠插件
- 《凤凰项目》读书笔记二
- 绕线画算法python_绕字的意思、绕的繁体字、绕的笔顺笔画、绕字部首和繁体字绕的意思...
- python控制雷电模拟器
- JavaSE第八章 IO流
- 【故事编程:Lambda表达式】之最甜的巧克力(二)
- 涉密计算机u盘管理,涉密U盘管理规定.doc
- 杂记-----------
- php 怎么验证邮箱验证码,PHP实现邮箱验证码验证功能
- Win10 下报错 WerFault.exe -解决方法亲测有效
- 【如何在linux环境下排查生产环境java线程阻塞问题】
热门文章
- ios runloop学习
- Android之ListView原理学习与优化总结
- apache 和 nginx 301重定向配置方法
- XNA2.0 API --- ViewPort.Unproject出错啦
- hdu 5434(状态压缩+矩阵优化)
- Flutter 以Dialog Activity形式展现
- PYTHON3 函数定义
- python+selenium七:下拉框、选项框、select用法
- Ensemble learning(集成学习)
- 【JulyEdu-Python基础】第 8 课:Python第三方库