如何使用android工具DDMS在C++代码中的内存泄漏 我试图通过启用NativeHeap快照,但我不明白 什么快照说,和符号是没有解析,没有文件名和行号显示。如何使用ddms在C++代码中的内存泄漏
回答
机堆跟踪是不支持的“隐形”功能。让它工作可能有点棘手。邮件列表上有一个older discussion,可能有用。
如果你正在接收数据并且已经有了UI,那么你已经到了一半了。 :-) DDMS在特定位置查找符号,您应该可以用ANDROID_SYMBOLS
环境变量覆盖符号,并将地址转换为addr2line
(它也必须能够找到)的行。
寻找大泄漏最简单的方法是配置DDMS按库分类分配。让应用程序运行一段时间,看看哪个库似乎正在增长最快。查看归因于该库的分配情况,看看是否有很多来自同一个地方。看看堆栈跟踪,看看从那里获得许多长期分配是否合理。不是非常严格,但它常常会有诀窍。
要更彻底地检查堆,您可以在设备上运行valgrind,但这并不容易第一次设置。
使用分配跟踪器。这里是大谈Android中发现内存泄漏:http://www.youtube.com/watch?v=_CruQY55HOk
在这里,你有一个博客帖子大约是:DDMS http://www.curious-creature.org/2009/02/07/track-memory-allocations-on-android/
博客文章是非常有用的了解内存泄漏的概念..刚才我试了这个帖子,它显示了在java代码中的分配。但我正在寻找一些适用于C++代码的东西。 – vsmph 2013-03-13 13:38:22
- 1. C++代码中的内存泄漏
- 2. 代码中潜在的内存泄漏
- 3. 用于确定c/C++代码中内存泄漏的工具
- 4. 此代码中的内存泄漏?
- 5. JNI代码中的内存泄漏
- 6. C中的内存泄漏?
- 7. 在Windows上的C代码中查找内存泄漏
- 8. C#内存泄漏?
- 9. 内存泄漏C++
- 10. 内存泄漏C#
- 11. C#内存泄漏?
- 12. 内存泄漏C
- 13. 我的代码的mysql内存泄漏?
- 14. 导致内存泄漏的jQuery代码
- 15. 带dealloc的小代码内存泄漏
- 16. 如何在PL/SQL代码中查找内存泄漏
- 17. Javascript/jQuery - 如何在大量代码中找到内存泄漏?
- 18. 如何使用仪器(泄漏)查找C或C++代码泄漏 - Xcode?
- 19. Xcode 4内存泄漏仪器如何获得泄漏发生的代码行
- 20. 内存泄漏在C /内存分配++
- 21. C#WinForm的内存泄漏
- 22. 此代码中的内存泄漏以及如何修复它?
- 23. 此代码是否会泄漏内存?
- 24. 内存泄漏0行代码。
- 25. 在C#中的内存泄漏WPF
- 26. 在c + +中的内存泄漏
- 27. C++内存泄漏使用char *
- 28. 内存泄漏使用JSON-C
- 29. STL替代内存泄漏
- 30. 在iPhone内存泄漏对象C代码
我使用了调试符号,现在符号得到解决,并显示代码的函数名称,地址和行号。 现在我正在运行应用程序,并使用了一个功能,例如:打开选项并查看关于应用程序的信息(版本,信用),评估应用程序种类的链接以及回到应用程序的信息视图。现在在这种情况下可以找到泄漏。 – vsmph 2013-03-18 14:04:51
如果您重复该过程10次,并且每次都泄漏对象,则应该看到具有相同堆栈跟踪的分配的10个副本。如果您能够“检查”早期运行并对分配进行区分,它会更有效,但有时候只要查看分配情况,问题就会跳出来。如果它很有用,你可以通过'adb shell dumpheap -n/sdcard/dump.txt'获取“原始”数据。 –
fadden
2013-03-18 16:43:37
非常感谢。它运行良好,我发现真正的大漏洞。 ----------------------------- 对于某些情况下,我无法多次运行场景,例如登录用户名。那种情况是无法涵盖的。对这些案例的任何建议都是值得欢迎 – vsmph 2013-04-04 10:34:53