2013-08-05 128 views
1

我已經試過以下的版本here。 調試我的應用程序,因爲它使用C庫和C內存分配(我使用libgdx) 在我看來,我有我的應用程序泄漏,但在上面的鏈接說明說你需要一個eng電話,所以我紮根了一個hct一個秒,然後我發現了以下說明我 已經在幾個網站上找到:Android調試C內存泄漏

安裝busybox的

adb shell 
su 

//提防下面的命令,你必須鍵入:

mount 

//第一然後檢查其中/系統是在列表

// EXT4和/ dev /塊/ mmcblk0p33可能不得不被替換

mount -o rw,remount -t ext4 /dev/block/mmcblk0p33 /system 


cp /system/lib/libc.so /system/lib/libc_original.so 

CP不起作用

cat /system/lib/libc.so > /system/lib/libc_original.so 

!如果/system/lib/libc_debug.so存在

警惕這種斷裂手機檢查

幸運的是,最後一個命令後,我的手機剛剛重新啓動,它的工作。

現在我已經意識到,我不知道在哪裏可以找到libc_debug.so,有什麼想法?手機是htc one s,android 4.1.1。在哪裏可以找到庫?與源代碼?

下一個問題:我安全地只是用/system/lib/libc_debug.so替換/system/lib/libc.so?

有沒有做到這一點,它甚至工作?

回答

1

你可以嘗試交叉編譯valgrind並使用它來調試你的內存泄漏。不知道你是如何進行開發的,但是,如果你簽出AOSP,你可以在external/valgrind和gdb中獲得valgrind,你可以將它們建立並放到你試圖調試的設備上。不知道如果這可能有幫助。

更新: 這是一個類似的方法來處理你在做什麼。他們執行了你重新啓動框架的步驟,然後使用DDMS來分析內存泄漏, How to Find memory leaks from native code in android和谷歌組thread類似的帖子看起來像是一個替代方案。

+0

感謝昆汀,我看過valgrind,但它看起來相當複雜,我沒有nexus S.你知道任何簡單的方法嗎?我不需要調試我正在使用的C庫,我只想看看我創建的某些C對象是否可能會泄漏。問題是我的應用程序過了一段時間才被殺死。我的意思是它沒有崩潰它只是消失,並沒有錯誤日誌。 – vallllll

+0

更新了關於ddms的一些信息,看起來像一些人通常做你在電話上設置了一個屬性,然後使用[ddms](http://developer.android.com/tools/debugging/ddms.html)來嘗試追蹤內存泄漏。希望有助於一些。 – dudebrobro

+0

thks我已經做 %adb shell setprop libc.debug.malloc 1 %adb shell stop %adb shell start並且它不會更改ddms中的Native選項卡仍然是空的我有HTC 4.1.1版本的Android 4.1.1 。還有一些關於分配的日誌會幫助我 – vallllll