注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

鑫淼梦园的博客

圆你的梦想 从这里开始

 
 
 

日志

 
 

delphi MAP FILE  

2014-09-27 07:32:01|  分类: delphixe7 |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |


|字号 订阅

什么是   MAP   文件?简单地讲,   MAP   文件是程序的全局符号、源文件和代码行号信息的唯一的文本表示方法,它可以在任何地方、任何时候使用,不需要有额外的程序进行支持。而且,这是唯一能找出程序崩溃的地方的救星。   
    
  DELPHI下生成MAP文件的方法:偶只知道下面两种,如果谁知道其他的方法   敬请告知   多谢   
  生成详细的MAP信息的方法   
  1.   project   ->   options   ->   Linker   ->   Map   file   选择detailed.   
  2.   D:\Fred\Code\DELPHI\MyPas\ErrLineByAddr2>dcc32   -GD   project1.dpr

procedure   TForm1.Button1Click(Sender:   TObject);   
  var   
      I,   J:   Integer;   
      p:   PChar;   
  begin   
      I   :=   10;   
      J   :=   0;     
      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   
    
  o   yeah..<星际里面注射兴奋剂的声音   ^_^>..   38   0001:0004C946         就是它了。。。unit1.pas的第38行!!去代码里看一下   果然就是38行   ^_^.....  

好像大的工程文件,查找不是方便!!!

  评论这张
 
阅读(243)| 评论(0)
推荐 转载

历史上的今天

在LOFTER的更多文章

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017