如果您无法下载资料,请参考说明:
1、部分资料下载需要金币,请确保您的账户上有足够的金币
2、已购买过的文档,再次下载不重复扣费
3、资料包下载后请先用软件解压,在使用对应软件打开
从泄漏地址和崩溃地址定位代码行从日志文件查看泄漏的地址,如下图我们可以可以查处泄漏的语句地址为0x11398.使用ProcessExlporerForWince工具上的CrackAddress功能定位代码行,使用此工具需设置工程属性如下图:(崩溃地址和泄漏地址同样方法查找代码行)通过map文件和汇编码文件查找崩溃地址或泄漏地址工程设置如下:首先分析map文件找出与崩溃地址或泄漏地址最接近且小的函数地址。函数相对行偏移函数信息函数地址函数所在代码文件0001:000002b0?ThreadTest@@YAKPAX@Z000112b0fImageViewDemoDlg.obj0001:000002d8?OnInitDialog@CImageViewDemoDlg@@MAAHXZ000112d8fImageViewDemoDlg.obj0001:000003e8??_ECImageViewDemoDlg@@UAAPAXI@Z000113e8fiImageViewDemoDlg.obj找出的函数为OnInitDialog,函数地址为0x000112d8,泄漏语句地址为0x11398。计算泄漏语句地址在函数中的偏移地址:语句偏移地址=语句地址–函数地址;0xC0=0x11398-0x000112d8;通过上面的map信息找到对应的汇编文件,可以看出在ImageViewDemoDlg.cod文件中,我们到ImageViewDemoDlg.cod文件中查找OnInitDialog函数的汇编信息:|$T45375|DCD|?OnInitDialog@CImageViewDemoDlg@@MAAHXZ|DCD0x40004404;Functioncompileflags:/Ods00104AREA|.text|,CODE,ARM00104|?OnInitDialog@CImageViewDemoDlg@@MAAHXZ|PROC;CImageViewDemoDlg::OnInitDialog通过上述生成的汇编信息,我们可以得到函数在code文件的偏移地址为0x00104,泄漏(崩溃)语句地址在cod文件的偏移地址=函数在code文件偏移地址+语句偏移地址0x1C4=0x00104+0xC0;在通过cod文件查找与0x1C4对应的偏移地址:|$T45375|DCD|?OnInitDialog@CImageViewDemoDlg@@MAAHXZ|DCD0x40004404;Functioncompileflags:/Ods00104AREA|.text|,CODE,ARM00104|?OnInitDialog@CImageViewDemoDlg@@MAAHXZ|PROC;CImageViewDemoDlg::OnInitDialog;48:{//cod文件中对应源码的行数偏移地址汇编指令00104e1a0c00dmovr12,sp00108e92d0001stmdbsp!,{r0}0010ce92d5000stmdbsp!,{r12,lr}00110e24dd038subsp,sp,#0x3800114|$M45373|;49:CDialog::OnInitDialog();00114e59d0040ldrr0,[sp,#0x40]00118eb000000bl|?OnInitDialog@CDialog@@UAAHXZ|;50:;51://Settheiconforthisdialog.Theframeworkdoesthisautomatically;52://whentheapplication'smainwindowisnotadialog;53:SetIcon(m_hIcon,TRUE);//Setbigicon0011ce3a02001movr2,#100120e59d0040ldrr0,[sp,#0x40]00124e5901064ldrr1,[r0,#0x64]00128e59d0040ldrr0,[sp,#0x40]0012ceb000000bl|?SetIcon@CWnd@@QAAPAUHICON__@@PAU2@H@Z|;54:SetIcon(m_hIcon,FALSE);//Setsmallicon00130e3a02000movr2,#000134e59d0040ldrr0,[sp,#0x40]00138e5901064ldrr1,[r0,#0x64]0013c