delphi,根据access violation的出错信息查找源代码出错位置

首先,编译的时候,project -> options -> Linker -> Map file 选择detailed.

出错时会弹出access violation错误,里面有个地址,类似:Access violationat address 0044D967 in module....

计算公式:

崩溃行偏移 = 崩溃地址(Crash Address) - 基地址(ImageBase Address) - 0x1000 
0044d967 - 00400000 = 0004d967 - 00001000 = 0004c967 

记住这个数字:4c967

我们用ultraedit32/editplus之类的工具打开 .map文件,然后找到

Line numbers for Unit1(Unit1.pas) segment .text

这样的文字,里面可能是这样的:

 28 0001:0004C944    29 0001:0004C957    30 0001:0004C95F    32 0001:0004C987
 34 0001:0004C9BC    34 0001:0004C9C3

第30行编译生成的内存地址是4c95f开始的,出错的代码位于这行区间,也就是30行。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值