Valgrind

ART 堆支持可选的 valgrind 工具,这款工具提供了一种方法来检测对无效堆地址的读取和写入操作。ART 可检测应用何时在 valgrind 下运行,并在每个对象分配前后插入红色区域。如果对这些红色区域有任何读取或写入错误,valgrind 将输出错误消息。例如,如果您在通过 JNI 直接访问数组时,越过数组元素末端进行读取或写入,就会出现此类错误。由于 AOT 编译器使用隐式 null 检查,因此建议使用 eng 版本运行 valgrind。另外值得一提的是,valgrind 比正常执行速度慢一个数量级。

以下是一个使用示例:

# build and installmmm external/valgrindadb remount && adb sync# disable selinuxadb shell setenforce 0adb shell setprop wrap.com.android.calculator2"TMPDIR=/data/data/com.android.calculator2 logwrapper valgrind"# push symbolsadb shell mkdir /data/local/symbolsadb push $OUT/symbols /data/local/symbolsadb logcat

你可能感兴趣的:(Valgrind)