最近一段时间十分郁闷,公司一个新上线的项目马上要上线了,有个核心的程序在内部测试过程中没有问题,但在实际运行过程中,不知是何原因却老是出现问题,而错误信息的扑捉一直不好处理,因为问题的出现没有规律性,且每次发生的间隔多为运行1-3天时会出现,如果用DELPHI调试,一是等待周期太长,二来程序中有一些通过try方法屏蔽的部分错误 信息会不断在delphi内触发报错,由于程序是需要不断实时运行的程序,不断弹出的对话框严重影响程序的运行。所以,当时只好通过记录日志方法查找问题。事实证明这个方法并不是一个理想的好方法,因为往往记录了一大堆的日志,也不知道问题出在哪里,十分头疼。
这种情况维持了很长一段时间,问题依然无法定位解决,如果能够根据报错信息直接定位到具体的delphi的源代码行就好了,说干就干,经过一晚上的努力,终于找到了一个比较简单,当然是十分适合delphi的方法。
下面将这个方法介绍给大家,以delphi7为对象:
1、先对需要分析的程序源代码重新编译,编译的同时需要获得对应的MAP文件,下面是具体的操作步骤:
2) 重新编译程序,在设定生成最终执行文件的目录下你可以发现一个与执行文件同名,后缀为map的文件,这个就是我们要的map文件了。
那个组件的事件发生崩溃,在那个事件begin的下面设断点,然后按F8一步一步运行下去,到错误处,程序会终止运行。