在一些论坛上总是看到这样的帖子:我的程序运行到什么什么状态后突然退出了;我的程序无法启动;我的程序有内存泄漏问题等等。实际上诸如这样的问题都可以通过hooklogger获得很多有用的信息。在这里再一次由衷地赞美一下hooklogger,非常好的debug工具,哈!
以前我写过一篇关于如何使用hookblogger的blog(参见 HookLogger在UIQ上的使用方法)。尽管那是在UIQ上面的用法,不过对于在S60上的使用还是有参考价值的。
我现在使用的hooklogger的版本是0.42。在这个版本上,hookeuser命令被SetupHooks代替,强烈推介使用setuphooks命令!
使用Hooklogger的过程还是三步:
1、 在环境中安装hook(注意不是安装hooklogger这个程序)
2、 使用hooklogger.exe,查看信息
3、 从环境中卸载掉hook,恢复成普通状态
这三步是前后依赖的关系,并不是每次都需要执行这三步。第一步是通过setuphooks完成的,只是在环境中安装hook,第二步才是使hook工作的步骤。因此只要你的环境不变,只需要安装一次就可以了,可以一直不用卸载,因为hooklogger.exe不运行的话,hook对环境没有影响。
我们先来了解一下setuphooks命令。在cmd中通过cd命令来到hooklogger的安装路径下,然后输入setuphooks –h打印出来hooklogger的帮助信息如下,注释是我加的。
、通过setuphooks命令在环境中安装hook
运行命令setuphooks epocroot,如果成功的话就会有如下的提示信息:
- Setting up hooks in "/epoc32/release/winscw/udeb"
- 1 file(s) copied.
- Setup euser.dll to load EUserParasite_EKA2.dll, original preserved as euser.orig.dll.
- Run SetupHooks with --r to restore it
如果
hook 已经被安装,就会有如下的错误提示信息:
- Setting up hooks in "/epoc32/release/winscw/udeb"
- "euser.orig.dll" is present - it appears that hooks have already been set up on this SDK? at C:/pf/HookLogger/SetupHooks.cmd l
- ine 88.
、使用hooklogger捕捉信息2
在cmd中运行命令hooklogger。如果此时出现下图所示提示,我们需要关掉模拟器,然后重新运行。
应用程序Hooklogger.exe被运行,如下图所示。如果hook模拟器不成功的话,在hooklogger的标题中会显示“not connected”这样的字符串。
一般情况下我们不需要更改缺省配置,它足够用了。唯一需要关注的就是图中红色圈圈住的部分。这里mointor的意思是对应的事件只显示在相应的tag中,比如选在了Leaves,如果发生了leave,就可以在Leaves那一个tag(图中蓝色的部分)中看到信息。Log的意思是不仅tag中显示信息,还要将信息写到log文件中。
我认为大家只需要知道上面这些就够了。
不论是在debug状态还是普通状态运行模拟器,如果hook成功的话hooklogger的标题就会变成下图所示
记住先运行hooklogger,然后运行模拟器。
然后就可以享受hooklogger带来的便利了。:)
3、卸载hook,恢复环境。
运行命令setuphooks epocroot --r 注意是两个“-”。运行成功的提示信息如下:
- Setting up hooks in "/epoc32/release/winscw/udeb"
- Restored euser.dll from euser.orig.dll; hooks no longer in place
如果已经卸载,提示如下:
- Setting up hooks in "/epoc32/release/winscw/udeb"
- Can't find "euser.orig.dll" - hooks don't appear to be set up on this SDK? at C:/pf/HookLogger/SetupHooks.cmd line 81.