如何在c ++代码中使用ddms进行内存泄漏

时间:2013-03-13 13:12:45

标签: android android-ndk ddms

如何在c ++代码中使用android工具DDMS进行内存泄漏 我尝试通过启用NativeHeap拍摄快照,但我不理解 快照是什么,符号没有解析,没有显示文件名和行号。

2 个答案:

答案 0 :(得分:6)

DDMS中的本机堆跟踪是一种不受支持的“隐形”功能。让它工作可能有点棘手。邮件列表中有older discussion可能有用。

如果您正在接收数据并启动了用户界面,那么就在那里。 :-) DDMS在特定位置查找符号,您应该能够使用ANDROID_SYMBOLS环境变量覆盖这些符号,并将地址转换为addr2line(它必须能够找到)的行。

查找大泄漏的最简单方法是配置DDMS以按库对分配进行排序。让应用程序运行一段时间,看看哪个库似乎增长最快。查看归因于该库的分配,看看是否有很多来自同一个地方的分配。查看堆栈跟踪,看看从那里获得许多长期分配是否有意义。不是很严格,但它通常可以解决问题。

要对堆进行更彻底的检查,可以在设备上运行valgrind,但第一次设置并不容易。

答案 1 :(得分:2)

使用分配跟踪器。以下是关于在Android中查找内存泄漏的精彩演讲:http://www.youtube.com/watch?v=_CruQY55HOk

在这里你有一篇关于它的博客文章:http://www.curious-creature.org/2009/02/07/track-memory-allocations-on-android/