zoukankan      html  css  js  c++  java
  • android malloc_debug tool

    android malloc_debug tool

    130|console:/ # cat /data/local.prop                                           
    libc.debug.malloc.options=backtrace=16 guard=8 fill_on_free=16 free_track=2046 leak_track
    libc.debug.malloc.program=slub_debug_test.bin

    在/data/local.prop里写了上述内容后,一般需要重启下系统,重启后看下slub_debug_test.bin进程的maps里是否有链接libc_malloc_debug.so,如果有,说明正常。

    上面options里加了leak_track,但是只有在slub_debug_test.bin退出后,才会将mem leak信息打印出来,这有些鸡肋..

    打印出来的log在logcat,例如:

    console:/ # logcat |grep malloc_debug
    09-22 15:24:56.400  4914  4914 E malloc_debug: +++ slub_debug_test.bin leaked block of size 16384 at 0x7b690a17f0 (leak 1 of 2)
    09-22 15:24:56.400  4914  4914 E malloc_debug: Backtrace at time of allocation:
    09-22 15:24:56.402  4914  4914 E malloc_debug:           #00  pc 00000000000011f0  /vendor/bin/slub_debug_test.bin
    09-22 15:24:56.402  4914  4914 E malloc_debug:           #01  pc 000000000007d844  /apex/com.android.runtime/lib64/bionic/libc.so (__libc_init+108)
    09-22 15:24:56.402  4914  4914 E malloc_debug:           #02  pc 0000000000000000  <unknown>
    09-22 15:24:56.402  4914  4914 E malloc_debug: +++ slub_debug_test.bin leaked block of size 8 at 0x7b6900a5b0 (leak 2 of 2)
    09-22 15:24:56.402  4914  4914 E malloc_debug: Backtrace at time of allocation:
    09-22 15:24:56.404  4914  4914 E malloc_debug:           #00  pc 00000000000d64e8  /apex/com.android.runtime/lib64/bionic/libc.so
    09-22 15:24:56.404  4914  4914 E malloc_debug:           #01  pc 000000000008b208  /apex/com.android.runtime/lib64/bionic/libc.so (newlocale+160)
    09-22 15:24:56.404  4914  4914 E malloc_debug:           #02  pc 000000000009956c  /system/lib64/vndk-sp-29/libc++.so
    09-22 15:24:56.404  4914  4914 E malloc_debug:           #03  pc 000000000009f1b8  /system/lib64/vndk-sp-29/libc++.so (std::__1::locale::__global()+160)
    09-22 15:24:56.404  4914  4914 E malloc_debug:           #04  pc 000000000009f218  /system/lib64/vndk-sp-29/libc++.so (std::__1::locale::locale()+16)
    09-22 15:24:56.404  4914  4914 E malloc_debug:           #05  pc 0000000000075c5c  /system/lib64/vndk-sp-29/libc++.so (std::__1::basic_streambuf<char, std::__1::char_traits<char>>::basic_streambuf()+36)
    09-22 15:24:56.404  4914  4914 E malloc_debug:           #06  pc 00000000000815d4  /system/lib64/vndk-sp-29/libc++.so (std::__1::ios_base::Init::Init()+68)
    09-22 15:24:56.404  4914  4914 E malloc_debug:           #07  pc 0000000000082890  /system/lib64/vndk-sp-29/libc++.so
    09-22 15:24:56.404  4914  4914 E malloc_debug:           #08  pc 0000000000050d08  /apex/com.android.runtime/bin/linker64
    09-22 15:24:56.404  4914  4914 E malloc_debug:           #09  pc 0000000000050f20  /apex/com.android.runtime/bin/linker64
    09-22 15:24:56.404  4914  4914 E malloc_debug:           #10  pc 0000000000050e2c  /apex/com.android.runtime/bin/linker64
    09-22 15:24:56.404  4914  4914 E malloc_debug:           #11  pc 000000000004ce70  /apex/com.android.runtime/bin/linker64
    09-22 15:24:56.404  4914  4914 E malloc_debug:           #12  pc 000000000004c03c  /apex/com.android.runtime/bin/linker64
    09-22 15:24:56.404  4914  4914 E malloc_debug:           #13  pc 00000000000533f4  /apex/com.android.runtime/bin/linker64
    09-22 15:24:56.404  4914  4914 E malloc_debug:           #14  pc 0000000000000000  <unknown>

    slub_debug_test.bin main函数如下,malloc一个16KB后的buffer后就return了:

    ...
    unsigned char *ptr = (unsigned char *)malloc(16*1024);
    printf("the alloced mem: 0x%lx.
    ", (unsigned long)ptr);
    
    return 0;
    }

    reference:

    https://android.googlesource.com/platform/bionic/+/master/libc/malloc_debug/README.md

  • 相关阅读:
    第4月第1天 makefile automake
    第3月30天 UIImage imageWithContentsOfFile卡顿 Can't add self as subview MPMoviePlayerControlle rcrash
    第3月第27天 uitableviewcell复用
    learning uboot fstype command
    learning uboot part command
    linux command dialog
    linux command curl and sha256sum implement download verification package
    learning shell script prompt to run with superuser privileges (4)
    learning shell get script absolute path (3)
    learning shell args handing key=value example (2)
  • 原文地址:https://www.cnblogs.com/aspirs/p/15331417.html
Copyright © 2011-2022 走看看