您的位置:首页 > 其它

How to use hooklogger

2010-05-27 21:13 435 查看
How to use hooklogger
HookLogger是由Symbian提供的一款很好的emulator工具,有助于迅速找到泄漏的地方。它只能运行在emulator上。

一、HookLogger如何工作?
这个工具是通过替换EUSER.DLL文件为自己的版本,来记录内存分配情况、进程和线程的创建、Leaves等等。HookLogger应用程序收集这些日志信息,然后以一种易读的格式呈现给用户。

二、如何安装?
同任何windows软件的安装!

三、如何配置?
安装完需要做下配置,就是让模拟器和hooklogger软件关联上:
1. 打开Windows的命令控制台(开始菜单中单击运行,输入cmd然后就按下回车),输入下面的命令:
//列出当前安装的模拟器
C:/-> Devices
//关联模拟器,
C:/->SetupHooks S60_3rd_MR:com.nokia.s60
如下图所示:

、如何使用?
1. 首先运行HookLogger,在Filter选项页上选择Include Only Checked,然后在右侧的应用程序列表中挑上要调试的应用程序,这样Threads页上出现的内容就少些,方便查找。

2. 以debug模式启动要调试的程序,这是Hooklogger会多次弹出一些确认对话框,只需按确定就行,然后运行一遍程序,退出时会提示内存泄露,记下这个内存地址

3.在Threads 页上找到调试的程序,点击右键,选择Allocations from process,如下图所示:
4然后出现下面的画面,列出了该应用程序分配的所有的内存,然后找到泄露的地址
5 在泄露的地址项上双击,出现详细的信息,包括泄露出现的源码文件及代码行数,如下图:

五、后记:
使用HookLogger常出现的问题:
1. 好像hooklogger和模拟器总是关联不上,就是Threads页里面什么也没有?
答:请确认,先运行hooklogger,然后启动调试程序

2. 我按照第一步做了,还是不行,就是一顿确定后就没反应了?
答:按下F8(resume)试试,就是那个红三角

3. 在Threads页中出现了好多的thread,移动下scrollbar,非常慢?
答:请确认是否设置了filter,就是在 四、如何使用的第一条说的

4. 找到了泄露分配的指针,可是看不到源码,全是dll?
答:我没有遇见过这种情况,不过,网上说,这可能是某些库里分配了内存,但是需要你来释放,就是内存的所有权转移你了,而没有释放。

5. 提示泄露在我的代码里面,可是我确实没有new对象呀?
答:原则上,不new一般是不需要delete的,可是也有特殊的情况,也许是库设计的不太好吧,看下面的代码片段(我折腾了好一阵子):
如果注释掉Line4,就提示在Line1处有泄露!
//code segment
Line 1: CCommsDatabase* commDb = CommsDatabase::NewL(EDatabaseTypeIAP);
Line 2: CleanupStack::PushL(commDb);
Line 3: commDb->BeginTransaction();
……
Line 4:commDb->CommitTransaction();
Line 5:CleanupStack::PopAndDestroy(commDb);
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: