使用libc_malloc_debug_leak时android malloc崩溃

时间:2016-04-15 06:04:10

标签: android debugging android-ndk malloc native-code

我试图在Android 6.0上调查我的本机内存使用情况,但是当我尝试使用malloc内存时,我的应用程序一直在崩溃。步骤如下:

  1. 我从CM rom下载了libc_malloc_debug_leak.so用于我的手机(Nexus 5)

  2. 设置libc.debug.malloc 1。

  3. 重启手机。

  4. 安装我的应用。

  5. 4.4之类的旧Android设备上,效果非常好,但是当我在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) 原因,我会在寻找一个人回答我的问题时尝试。转储的崩溃日志如下:

    new Thread(new Runnable() {
              @Override
              public void run() {
                 Glide.get(MainActivity.this).clearDiskCache();
              }
         }).start();
    

1 个答案:

答案 0 :(得分:0)

你以前很幸运。您不能从一个构建中获取非官方系统库,并期望它在另一个构建上工作。没有强制执行该库的工作方式与同一设备的补丁版本兼容。

仅供参考,我们正在努力使这个功能(调试malloc)通常可供应用程序开发人员使用,但它还没有准备好。