源贴 http://www.delphibbs.com/keylife/iblog_show.asp?xid=16815
首先要读懂源贴的基础上,来运行本实例
1,新建一个工程文件project1.dpr
program Project1;
uses
SysUtils,
Forms,
Unit1 in 'Unit1.pas' {Form1};
{$R *.res}
var
i,j:real;
ss:string;
begin
Application.Initialize;
Application.CreateForm(TForm1, Form1);
i:=1;
j:=0;
i:=i/j;
ss:=CurrToStr(i);
Application.Run;
end.
2, shift+ctrl+F11,调出project options,打开linker舌头,mapfile选择detailed
3, run,声成exe和map文件
4, 在程序所在目录执行exe文件,报地址错误,记录地址,0x0044cfa1,
崩溃行偏移 = 0x0044cfa1 - 0x00400000 - 0x1000 = 0x0004bfa1
5, map文件最后行信息
Line numbers for Unit1(Unit1.pas) segment .text
24 0001:0004BD94 24 0001:0004BD9B
Line numbers for Project1(D:/suhq/学习笔记/崩溃程序/Project1.dpr) segment .text
13 0001:0004BF34 14 0001:0004BF57 15 0001:0004BF63 16 0001:0004BF7B
17 0001:0004BF8D 18 0001:0004BF9B 19 0001:0004BFAE 20 0001:0004BFD6
21 0001:0004BFFF
Bound resource files
d:/program files/borland/delphi6/Lib/CONTROLS.RES
Unit1.dfm
Project1.res
Project1.drf
6, 可以看到4bfa1地址在18 0001:0004BF9B 19 0001:0004BFAE之间,证明是18行出的问题,
定位到程序正好18行为 i:=i/j;
至此找出问题所在。
读“如何通过崩溃地址找到出错的代码行”有感 delphi示例
最新推荐文章于 2024-05-07 12:15:47 发布
本文通过一个简单的Delphi程序实例,详细介绍了如何定位和解决除以零导致的程序崩溃问题。从创建项目到利用map文件定位错误发生的具体位置,并最终确定引发异常的代码行。
1622

被折叠的 条评论
为什么被折叠?



