使用HookLogger调试内存泄露

来源:互联网 发布:守望先锋网络不稳定 编辑:程序博客网 时间:2024/05/16 19:18

最近在做symbianC++开发。因为引用了一个shapelib的开源库,在退出程序时,老是会弹出程序已关闭,程序名称 alloc:内存地址之类的错误。如下图所示。

 

上网搜了一下,这个对话框往往是内存泄露引起的。

Symbian上调试内存泄露也有很多方法。其中有一个工具是大家都比较认同的,hooklogger。下载试用了一下,的确很方便。

第一步,下载HookLogger,下载地址如下:

http://developer.symbian.com/main/downloads/files/HookLogger.msi


该版本的相关介绍见如下页面:

http://developer.symbian.com/main/tools_and_sdks/developer_tools/supported/hook_logger/index.jsp

我用的sdk版本是: s60 3rd Edition 1.1,应该symbian7.09.0都支持吧

安装完后在安装路径下根据SDK版本, 运行 SetupHooks  即可, 具体步骤如下:
首先在命令提示符下输入:
devices

获得你的SDK对应的 devices 标识, 我电脑上显示的SDK版本是:S60_3rd_MR_2:com.nokia.s60
然后找到你的HookLogger的安装路径, 先切换到你安装hooklogger的盘符,然后用cd命令进入:

我的安装在D盘,输入”D:”回车,然后输入: cd D:"Symbian"HookLogger 回车

运行
SetupHooks S60_3rd_MR_2:com.nokia.s60
然后先启动HookLogger,切换到Threads选项卡:

 

 再启动模拟器,可以看到Threads下面的输出区域有反应,说明成功了。

运行你要调试的程序,然后退出,程序弹出“程序已关闭的错误对话框”。然后在HookLogger里切换到Heap选项卡

 

点击下面第三个按钮,什么all alloc,第一个单词没显示出来。在上面找到出错的地址,双击弹出如下对话框:

 

在如图所示的地方,你可以看到出错的代码所在的文件和行数,然后检查你的代码,改正你的错误。

 

原创粉丝点击