如何使用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. C++ OpenMP代碼中的內存泄漏
- 3. c代碼中的內存泄漏
- 4. C++代碼中的內存泄漏
- 5. 內存泄漏的代碼
- 6. 代碼中潛在的內存泄漏
- 7. iOS:內存泄漏代碼
- 8. 內存泄漏代碼
- 9. 內存泄漏此代碼
- 10. 用於確定c/C++代碼中內存泄漏的工具
- 11. JNI代碼中的內存泄漏
- 12. 此代碼中的內存泄漏?
- 13. 可可代碼中的內存泄漏
- 14. NSSortDescriptor代碼中的iOS內存泄漏
- 15. C中的內存泄漏?
- 16. 在Windows上的C代碼中查找內存泄漏
- 17. 內存泄漏C
- 18. C#內存泄漏?
- 19. C#內存泄漏?
- 20. 內存泄漏-c
- 21. 內存泄漏C#
- 22. 內存泄漏C++
- 23. 我的代碼的mysql內存泄漏?
- 24. C/C++內存泄漏(使用PCRE)
- 25. 導致內存泄漏的jQuery代碼
- 26. 帶dealloc的小代碼內存泄漏
- 27. 內存泄漏在c + + dll
- 28. 內存泄漏replaceAll在C
- 29. 內存泄漏在C++
- 30. 如何使用儀器(泄漏)查找C或C++代碼泄漏 - Xcode?
我使用了調試符號,現在符號得到解決,並顯示代碼的函數名稱,地址和行號。 現在我正在運行應用程序,並使用了一個功能,例如:打開選項並查看關於應用程序的信息(版本,信用),評估應用程序種類的鏈接以及回到應用程序的信息視圖。現在在這種情況下可以找到泄漏。 – 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