2

我在这里尝试过以下指令。调试我的应用程序,因为它使用 C 库和 C 内存分配(我使用 libgdx),在我看来,我的应用程序有泄漏,但上面链接上的说明说你需要一部英文手机,所以我植根了一个 hct one s然后我在几个网站上找到了以下说明:

安装busybox

adb shell
su

//请注意以下命令,因为您必须键入:

mount 

//首先然后检查/system在列表中的位置

//ext4 和 /dev/block/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 是否存在

 adb shell mv /system/lib/libc_debug.so /system/lib/libc.so

幸运的是,在最后一个命令之后,我的手机刚刚重新启动并且它正在工作。

现在我已经意识到,我不知道在哪里可以找到 libc_debug.so,有什么想法吗?手机是 htc one s,android 4.1.1。在哪里可以找到库?有源代码?

下一个问题:将 /system/lib/libc.so 替换为 /system/lib/libc_debug.so 是否安全?

有没有人这样做过,它甚至有效吗?

4

1 回答 1

2

您可以尝试交叉编译 valgrind 并使用它来调试内存泄漏。不确定您是如何进行开发的,但是,如果您签出 AOSP,您会在 external/valgrind 和 gdb 中获得 valgrind,您可以将它们构建并放到您尝试调试的设备上。不知道这是否有帮助。

更新:这是与您正在做的事情类似的方法。他们执行了您重新启动框架的步骤,然后使用 DDMS 来分析内存泄漏、 如何从 android 中的本机代码中查找内存泄漏以及 google 群组线程中的类似帖子似乎是另一种选择。

于 2013-08-05T22:46:27.050 回答