阅读:1522回复:8
怎么检查Memory leak problem
我的驱动总是发生不能分配non-paged pool ,但是我又不知道为什么?
还有,有时候驱动卸载的时候也会出现memory not free,但是,我又找不到那块内存我没有释放。 请各位大虾帮忙、 |
|
沙发#
发布于:2003-08-15 13:29
可以试试DDK自带工具driver verifier
|
|
板凳#
发布于:2003-08-15 13:40
什么驱动?
普通WDM的吗?如果是,你可使用动态加载,然后卸载,输出所有分配和释放内存的,看是否一致 |
|
|
地板#
发布于:2003-08-15 16:38
谢谢各位的建议,
1,I have used driver verifier.但是,它只能告诉我有一块内存没有释放,而我没有足够的信息找到我 是在什么地方没有释放这块内存 2。关于DLL的方法,楼上兄弟能否说清楚点,如果能给我一些列子,不胜感激 email: lizh@calcomp.com.sg |
|
地下室#
发布于:2003-08-16 22:58
可以重新写ExAllocatePool/ExFreePool,每次allocate的时候打印出address/count/line-in-file,free的时候也打印address,然后比较哪个少了。
这个方法比较笨,但简单一些。 :D |
|
|
5楼#
发布于:2003-08-17 10:44
rayyang2000的方法的确很简单,通常我也使用这个办法来调试,还有就是在你分配的内存处写入标志,不同地方标志不一样,当driver verifier发现没有释放的内存时可使用SoftIce等工具查看标志以便确定那里的内存没有释放
|
|
|
6楼#
发布于:2003-08-17 22:57
AllenZh说的标志是不是“Tag”?
|
|
|
7楼#
发布于:2003-08-17 23:16
AllenZh说的标志是不是“Tag”? 应该是的了。 多句嘴,DDK的ExAllocatePool其实是ExAllocatePoolWithTag的宏。 :D :D |
|
禁止发言
|
8楼#
发布于:2003-08-18 12:43
用户被禁言,该主题自动屏蔽! |