Categories: Lang-CN | How To | Tools | Debugging
This page was last modified 09:53, 10 July 2008.
使用HookLogger检测内存泄漏
From Forum Nokia Wiki
使用HookLogger检测内存泄漏
开发人员在他们的代码中查找内存泄漏是最为费时的任务之一。若你的应用程序退出时发生了内存泄漏,有时通过分析代码定位错误所在是一项很艰难的工作。
由Symbian提供的HookLogger 是一款很好的emulator工具,有助于迅速找到泄漏的地方。
Contents |
HookLogger如何工作?
这个工具通过替换EUSER.DLL文件为自己的版本来使能记录内存分配情况、进程和线程的创建、Leaves等等。HookLogger应用程序收集这些日志信息,然后以一种易读的格式呈现给用户。
安装
HookLogger有一个便利的安装程序,可以在这里下载。
注意:
- HookLogger的安装路径必须不含有任何空格。如果有空格(比如: 安装到了缺省的位置下: Program Files\Common Files\Symbian\tools),你就必须编辑HookEUSER.pl文件末尾的两行。替换
行号: 74 my $cmd = "copy $hooks_src";
为
my $cmd = "copy \"$hooks_src\"";
以及
行号 : 77 $cmd = "$Bin/AttachDll $euser $hooks $hooked_euser";
为
$cmd = "\"$Bin/AttachDll\" $euser $hooks $hooked_euser";
- S60平台的安装路径必须不含任何空格。可能这不是一个严重的问题,因为不管怎样,Symbian toolchain的几乎所有工具都有这个限制。当然,你也可以手工替换EUSER.DLL文件。
如果HookLogger调用栈显示不正确,你可能需要把下面这行加到项目的.mmp文件中:
OPTION CW -frame on.
用法
1. 使用HookLogger附带的一个脚本文件。在HookLogger的安装文件夹打开命令行,然后输入:
HookEUSER winscw
随后,可能得到这些错误信息:
C:\Program Files\Common Files\Symbian\tools>HookEUSER winscw
Target path is C:\Symbian\9.1\S60_3rd_MR\epoc32/release/winscw/UDEB
1 file(s) copied.
'C:/Program' is not recognized as an internal or external command,
operable program or batch file.
Failed running "C:/Program Files/Common Files/Symbian/tools/AttachDll euser.dll
EUserParasite_eka2.dll euser.dll.HOOKED" at HookEUSER.pl line 78.
在第78行,你可以设置你当前所使用的SDK的路径
my $path = "C:/Symbian/9.1/S60_3rd_MR/Epoc32/release/$platform/$release";
或者设置epocroot路径 注意,这个perl脚本需要设置EPOCROOT环境变量。比如:
set EPOCROOT=S:\Symbian\9.2\S60_3rd_FP1\
2. 从开始菜单启动HookLogger。
3. 选择"Filters"页,摁下"Browse for EXE"按钮,找到你想分析的发生泄漏的可执行文件。在下拉框中选择"Include only checked"。
4. 启动emulator.
5. 在emulator中启动你的应用程序,再现内存泄漏,然后关闭。
6. 检查HookLogger的"Heap"页,然后摁"List all allocs"按钮。
你将看到泄漏数据列表。用"Alloc details"得到所需的信息: 泄漏内存分配时的调用堆栈!
注意! 记着在使用HookLogger之后恢复原来的EUSER.DLL文件,因为改过的那个版本很慢、使用更多的资源。恢复命令:
HookEUSER -r winscw
内部链接
外部链接
| Related Discussions | ||||
| Thread | Thread Starter | Forum | Replies | Last Post |
| 关于hooklogger的使用 | liuxingyu_best | Symbian | 3 | 2008-07-04 12:37 |
