我试图在Android 6.0上调查我的本地内存使用情况,但我的应用程序在尝试分配一些内存时不断崩溃。步骤如下:
-
我从CM rom为我的手机(Nexus 5)找到了libc_malloc_debug _leak.so
-
设置libc.debug.malloc 1。
-
重新启动我的手机。
-
安装我的应用程序。
在像4.4
这样的旧安卓设备上,这非常有效,但当我在Android 6.0
上这样做时,我的应用程序不断崩溃。我不知道为什么会发生这种事,也不知道如何找到答案。有人能帮忙吗?
顺便说一句,我正在使用ndk-r9c
,我知道最新的是r11
,但升级到r11
需要很多工作,我不确定这是否是原因,我会在寻找答案的同时尝试一下。转储的崩溃日志如下:
Stack frame #00 pc 001e7abe /data/app/com.myapp-1/lib/arm/libmylib_ol.so: Routine __gabixx::__default_terminate() at libgcc2.c:?
Stack frame #01 pc 001e7acf /data/app/com.myapp-1/lib/arm/libmylib_ol.so: Routine __gabixx::__terminate(void (*)()) at libgcc2.c:?
Stack frame #02 pc 001e7b2b /data/app/com.myapp-1/lib/arm/libmylib_ol.so: Routine std::terminate() at libgcc2.c:?
Stack frame #03 pc 001e729b /data/app/com.myapp-1/lib/arm/libmylib_ol.so: Routine __cxxabiv1::call_terminate(_Unwind_Control_Block*) at libgcc2.c:?
Stack frame #04 pc 001e73f7 /data/app/com.myapp-1/lib/arm/libmylib_ol.so: Routine __cxxabiv1::scanEHTable(__cxxabiv1::ScanResultInternal&, int, bool, _Unwind_Control_Block*, _Unwind_Context*) at libgcc2.c:?
Stack frame #05 pc 001e7921 /data/app/com.myapp-1/lib/arm/libmylib_ol.so: Routine __gxx_personality_v0 at libgcc2.c:?
Stack frame #06 pc 00008a03 /system/lib/libc_malloc_debug_leak.so (_Unwind_Backtrace+130)
Stack frame #07 pc 000060ef /system/lib/libc_malloc_debug_leak.so
Stack frame #08 pc 00006b69 /system/lib/libc_malloc_debug_leak.so (leak_malloc+84)
你很幸运,它以前工作过。你不能从一个构建中获得一个非官方的系统库,然后期望它在另一个构建上工作。即使是同一设备的补丁版本,也没有强制要求该库以兼容的方式工作。
仅供参考,我们正在努力让应用程序开发人员普遍使用此功能(调试malloc),但它还没有准备好。