塞班软件开发如何查找内存泄露

changanfounder 2011-08-21 03:57:22
请问大家有没有一个好的方法检查工程中的内存泄露呢!我的工程中发现在绘图时发生了内存泄露,但是又定位不了具体在什么位置,各位大侠帮帮忙吧!
...全文
3086 33 打赏 收藏 转发到动态 举报
写回复
用AI写文章
33 条回复
切换为时间正序
请发表友善的回复…
发表回复
buyi8862 2012-05-09
  • 打赏
  • 举报
回复
谁有塞班系统的MT4外汇交易软件
a02020 2012-03-02
  • 打赏
  • 举报
回复
HookLogger
omegayy 2012-01-01
  • 打赏
  • 举报
回复
1. HookLogger正常安装

2. 依照HookLogger帮助文档,做好配置

3. 先启动HookLogger,再debug启动模拟器

4. 在HookLogger,选择thread选项卡,只勾选你要调试的应用程序进程。

5. 正常操作模拟器,退出。报内存泄露,这里可以看到泄露的内存地址。返回HookLogger,点heap选项卡,这里列出所有 thread中勾选的进程 分配的但当前还未释放的内存地址。找到模拟器报错对应的地址,双击进去就能看到具体是哪个指针没释放以及整个指针分配的函数调用栈。
changanfounder 2011-11-19
  • 打赏
  • 举报
回复
[Quote=引用 29 楼 hexflash 的回复:]

HookLogger 很方便的查找那个变量未delete
[/Quote]
您能详细说说具体的用法不?我只会简单的操作,有没有特别好的技巧的,谢谢~
HexFlash 2011-11-16
  • 打赏
  • 举报
回复
HookLogger 很方便的查找那个变量未delete
glovel0425 2011-10-10
  • 打赏
  • 举报
回复
好吧,帮顶了 !
changanfounder 2011-10-10
  • 打赏
  • 举报
回复
[Quote=引用 26 楼 glovel0425 的回复:]

引用 25 楼 changanfounder 的回复:

引用 24 楼 glovel0425 的回复:

引用 22 楼 changanfounder 的回复:

引用 21 楼 glovel0425 的回复:

这个是 栈上的,个人感觉堆上分配也是一样的原理吧。


symbian中EPOCHEAPSIZE的范围到底设置多少最好呢?
我的MMP中定义的大小是EPOCS……
[/Quote]

我也测试过,真机确实能用,但是我想要是操作次数足够多,他依然会显示“内存已满”,这里面的机理到底是怎么样的呢?你请教一下高手,有了新发现记得共享一下哦!
glovel0425 2011-10-10
  • 打赏
  • 举报
回复
[Quote=引用 25 楼 changanfounder 的回复:]

引用 24 楼 glovel0425 的回复:

引用 22 楼 changanfounder 的回复:

引用 21 楼 glovel0425 的回复:

这个是 栈上的,个人感觉堆上分配也是一样的原理吧。


symbian中EPOCHEAPSIZE的范围到底设置多少最好呢?
我的MMP中定义的大小是EPOCSTACKSIZE ……
[/Quote]可能吧,我现在也在跟个项目,然后这个定义的时候不是我定义的,现在一直在用,真机上也能跑通的。
changanfounder 2011-10-10
  • 打赏
  • 举报
回复
[Quote=引用 24 楼 glovel0425 的回复:]

引用 22 楼 changanfounder 的回复:

引用 21 楼 glovel0425 的回复:

这个是 栈上的,个人感觉堆上分配也是一样的原理吧。


symbian中EPOCHEAPSIZE的范围到底设置多少最好呢?
我的MMP中定义的大小是EPOCSTACKSIZE 0x5000
EPOCHEAPSIZE……
[/Quote]

塞班中EPOCHEAPSIZE的范围不是0x5000(20KB)到0x400000(4MB),你设置的范围会不会太大了呢!太小了会导致存储已满,太大了会有什么影响不?并不是越大越好吧!
glovel0425 2011-10-10
  • 打赏
  • 举报
回复
[Quote=引用 22 楼 changanfounder 的回复:]

引用 21 楼 glovel0425 的回复:

这个是 栈上的,个人感觉堆上分配也是一样的原理吧。


symbian中EPOCHEAPSIZE的范围到底设置多少最好呢?
[/Quote] 我的MMP中定义的大小是EPOCSTACKSIZE 0x5000
EPOCHEAPSIZE 0x10000 0x9000000
student120 2011-10-10
  • 打赏
  • 举报
回复
学习一下,最近一直也遇到内存不足的问题,一直没找到原因,顶起来
changanfounder 2011-10-10
  • 打赏
  • 举报
回复
[Quote=引用 21 楼 glovel0425 的回复:]

这个是 栈上的,个人感觉堆上分配也是一样的原理吧。
[/Quote]

symbian中EPOCHEAPSIZE的范围到底设置多少最好呢?
glovel0425 2011-10-10
  • 打赏
  • 举报
回复
这个是 栈上的,个人感觉堆上分配也是一样的原理吧。
glovel0425 2011-10-10
  • 打赏
  • 举报
回复
[Quote=引用 19 楼 changanfounder 的回复:]

引用 17 楼 glovel0425 的回复:

引用 9 楼 changanfounder 的回复:

但是我的工程无论怎么运行,在退出时都不出现ALLOC:****的警告呀!反而显示“存储已满”的字样,我用的版本是:S60_5th_Edition_SDK_v1.0,操作界面时出现上述问题。
存储已满,你试下在MMP中加入 EPOCHEAPSIZE 0x10000 0x8000000……
[/Quote] 实际上我也是NewComer,给你找了篇博客你看下吧,希望对你有帮助。就是申请内存不够的原因,个人感觉
http://blog.csdn.net/flashtao613/article/details/3913957
glovel0425 2011-10-09
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 changanfounder 的回复:]

但是我的工程无论怎么运行,在退出时都不出现ALLOC:****的警告呀!反而显示“存储已满”的字样,我用的版本是:S60_5th_Edition_SDK_v1.0,操作界面时出现上述问题。
[/Quote] 存储已满,你试下在MMP中加入 EPOCHEAPSIZE 0x10000 0x8000000 扩大线程的堆内存清理工程在编译
changanfounder 2011-10-09
  • 打赏
  • 举报
回复
[Quote=引用 17 楼 glovel0425 的回复:]

引用 9 楼 changanfounder 的回复:

但是我的工程无论怎么运行,在退出时都不出现ALLOC:****的警告呀!反而显示“存储已满”的字样,我用的版本是:S60_5th_Edition_SDK_v1.0,操作界面时出现上述问题。
存储已满,你试下在MMP中加入 EPOCHEAPSIZE 0x10000 0x8000000 扩大线程的堆内存清理工程在编译
[/Quote]

在MMP中加入 EPOCHEAPSIZE 0x10000 0x8000000 扩大线程的堆内存清理工程在编译
能详细说说原因不?
我的原工程中的MMP文件中是这样的 EPOCHEAPSIZE 0x80000 0x100000,当我照您说的改成您的数据时无法生成可执行程序,可能是堆申请的空间太大了吧!但是该成EPOCHEAPSIZE 0x80000 0x1000000就基本可以了,我试试了操作了好几百下都没有问题了,之前操作二十几次就会出现“内存已满”。我想要是增加操作次数,比如操作上千次等等,是不是还是会显示“内存已满”呢?想知道具体原因?
qwerty0755zxc 2011-10-09
  • 打赏
  • 举报
回复
这个要学习学习。~
changanfounder 2011-10-08
  • 打赏
  • 举报
回复
[Quote=引用 15 楼 student120 的回复:]

This panic is raised if an attempt is being made to insert a cleanup item into a position on the cleanup stack reserved for marking the current TRAP nest level. In practice this error occurs if the c……
[/Quote]
谢谢您的回复,这个清除栈能不能具体定位到哪一段代码呢?我的工程太大了,牵扯到清除栈的操作实在太多了~
noodle123 2011-09-29
  • 打赏
  • 举报
回复
塞班的大侠们,不懂的糊里糊涂的顶一个。
student120 2011-09-29
  • 打赏
  • 举报
回复
This panic is raised if an attempt is being made to insert a cleanup item into a position on the cleanup stack reserved for marking the current TRAP nest level. In practice this error occurs if the call to CleanupStack::PushL() happens when there has been no call to TRAP().

检查下清除栈操作看看有没有问题
加载更多回复(13)

3,120

社区成员

发帖
与我相关
我的任务
社区描述
塞班系统(Symbian系统)是塞班公司为手机而设计的操作系统,它的前身是英国宝意昂公司的 EP ( Electronic Piece of cheese)操作系统。
社区管理员
  • Symbian社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧