在 Android 外壳上:
/data/local/valgrind/enter code herebin/valgrind --leak-check=full --show-leak-kinds=all --track-origins=yes --log-file=/sdcard/valgrind.log /data/local/Test
==================================================== =======================
valgrind.log--堆摘要:
==21314== 堆摘要:
==21314== 在退出时使用:6 个块中的 2,098,270 字节
==21314== 总堆使用量:6 次分配,0 次释放,分配 2,098,270 字节
==21314==
==21314== 1 个块中的 4 个字节在 6 个丢失记录 1 中肯定丢失
==21314== 在 0x482BAEC:malloc (vg_replace_malloc.c:291)
==21314== 由 0x864B: ??? (在 /data/local/Test 中)
==21314==
==21314== 1 个块中的 10 个字节肯定丢失在 6 个丢失记录 2 中
==21314== 在 0x482BAEC:malloc (vg_replace_malloc.c:291)
==21314== 由 0x863B: ??? (在 /data/local/Test 中)
==21314==
==21314== 1 个块中的 80 个字节肯定丢失在丢失记录 3 of 6 中
==21314== at 0x482C2E4: operator new[](unsigned int) (vg_replace_malloc.c:378)
==21314== 由 0x85DF: ??? (在 /data/local/Test 中)
==21314==
==21314== 1 个块中的 1,024 个字节在丢失记录 4 of 6 中仍然可以访问
==21314== 在 0x482BAEC:malloc (vg_replace_malloc.c:291)
==21314== 由 0x4852DB3:__smakebuf(在 /system/lib/libc.so 中)
==21314==
==21314== 1 个块中的 1,048,576 字节可能在丢失记录 5 of 6 中丢失
==21314== 在 0x482BAEC:malloc (vg_replace_malloc.c:291)
==21314== 由 0x86C3: ??? (在 /data/local/Test 中)
==21314==
==21314== 1 个块中的 1,048,576 字节肯定丢失在 6 个丢失记录 6 中
==21314== 在 0x482BAEC:malloc (vg_replace_malloc.c:291)
==21314== 由 0x869F: ??? (在 /data/local/Test 中)
==21314==
==21314== 泄漏摘要:
==21314== 肯定丢失:4 个块中的 1,048,670 字节
==21314== 间接丢失:0 个块中的 0 个字节
==21314== 可能丢失:1 块 1,048,576 字节
==21314== 仍然可达:1 块中的 1,024 字节
==21314== 抑制:0 个块中的 0 个字节
==21314==
==21314== 对于检测到和抑制的错误计数,重新运行:-v
==21314== 错误摘要:来自 18 个上下文的 137 个错误(抑制:0 来自 0)
Android.mk:
LOCAL_PATH := $(call my-dir) include $(CLEAR_VARS) LOCAL_MODULE := Test LOCAL_SRC_FILES := helloworld.cpp APP_CPPFLAGS += -O0 include $(BUILD_EXECUTABLE)**
在 Linux 上我运行ndk-build NDK_DEBUG=1
所以这个测试是可调试的,为什么 valgrind 日志不显示行号?