我在
Android设备上设置了调试ROM,并启用了DDMS Native Heap来搜索libgdx内存泄漏.
我现在有一个跟踪,但没有附加源代码跟随领导.
我下载了libgdx源代码.
如何构建它启用gdb跟踪,以便我可以遵循跟踪引用的代码?
更新:
我从源代码构建了调试.so libgdx
为此,我修改了文件:
libgdx / GDX / JNI /集结android32.xml
添加到compile-natives目标
我还将APP_OPTIM:= debug添加到同一文件夹中的Application.mk
并将’-g’添加到同一文件夹中的Android.mk文件中:
LOCAL_CFLAGS:= -g $(LOCAL_C_INCLUDES:%= – I%) – 02 -Wall -D__ANDROID__
实际上,这会产生一个dbg libgdx.so动态库
libgdx / GDX /库/ armeabi
虽然我越来越近,但我仍然无法获得正在加载内存的函数的名称.
我正在使用arm-linux-androideabi-addr2line和函数的Hex地址,但它会打印出来
??
最佳答案 下载Android Source并构建它.
使用调试符号将DDMS指向lib.在命令行上:
export ANDROID_SYMBOLS = $ANDROID_SOURCE / out / target / product / flo / symbols / system / lib
请注意,$ANDROID_SOURCE是指您构建Android源的位置.
从该shell启动DDMS
$DDMS
现在您应该在ddms上看到本机跟踪.
我还从源代码构建了libgdx并添加了$LIBGDX_SOURCE / libgdx / gdx / obj / local / armeabi / libgdx.so
到$ANDROID_SOURCE / out / target / product / flo / symbols / system / lib以查看libgdx.so的方法名称.
预赛
您需要将设备设置为调试内存
adb root
adb shell setprop libc.debug.malloc 1
adb shell stop
adb shell start
设备必须是root或使用dbg ROM.