How to use hooklogger

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.    我按照第一步做了,还是不行,就是一顿确定后就没反应了?

答:按下F8resume)试试,就是那个红三角

 

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);

阅读更多
想对作者说点什么? 我来说一句

HookLogger及使用指南

2011年03月22日 1.66MB 下载

How to use DataGridView

2011年10月31日 10.96MB 下载

UndSt the Pointer In-depth

2010年07月28日 1.05MB 下载

没有更多推荐了,返回首页

加入CSDN,享受更精准的内容推荐,与500万程序员共同成长!
关闭
关闭