定位DLL导致crash的问题(BCB适用)

定位DLL导致crash的问题(BCB适用)

4.1日的消息果然是个joke,现在各大网站恢复以前的主页了。

回到这篇的主题。在定位crash问题时,首先要在编译版本时生成map文件。程序崩溃时,windows提示的offset地址,与VC生成的map文件描述比较一致,而BCB生成的map文件描述方式与VC的描述方式不太一样,有些地方需要注意。

例如,我们有个demo.exe程序,调用了demo.dll,程序崩溃,windows提示:在demo.dll中崩溃,offset地址为0x00002C90。

定位时,我们需要减去0x00001000,然后在map文件中寻找比0x00001C90小,但是最接近这个值所对应的函数描述。在BCB生成的demo.map文件中,我们可以找到以下代码段描述:

0001:00001C78  Cdemo::GetDemoInfo(Cdemo_info *)

因此基本判断是在函数Cdemo::GetDemoInfo中出错,需要对该函数进行review和测试。

Comments are closed.