源贴 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示例
最新推荐文章于 2012-02-01 02:35:55 发布